【问题标题】:Exposing messaging queue to web clients?向 Web 客户端公开消息队列?
【发布时间】:2020-12-17 21:38:47
【问题描述】:

考虑一个实时应用程序,其中 Web 客户端与某个实体 X 建立持久连接。

我们在这里可能的选择是:

  1. 连接到 Web 服务器,然后将消息发送到消息队列。
    在这种情况下,实体 X 相当于某个 Web 服务器,然后将该消息转发到消息队列。
                   |=Backend=             
(client) ----------|-(web server)-----------(messageq)------> process message
                   |             ^--backchannel connection

  1. 直接连接到消息队列。
    在这种情况下,Web 客户端直接连接到消息队列端点并推送消息。
                   |=Backend=
(client) ----------|-(messageq)------> process message
                   |

这里推荐的最佳做法是什么? 标准企业架构中的消息队列位于何处?此外,如果您知道最佳实践,请分享您是如何学习该信息的(哪些资源/书籍包含这些知识?)。谢谢。

【问题讨论】:

  • 我怀疑正确的做法是选项 #2,否则,您将把您的客户端耦合到某个可能不可取的消息队列工具。

标签: rabbitmq message-queue scalability system-design


【解决方案1】:

当客户端是网络浏览器时:

让我做一些问答,据此你的问题可能会得到解答

Q1:我们是否将应用程序数据库公开给我们的客户,以进行简单的读取操作?

A1:不,我们想要控制向客户端公开的内容

Q2:基于 Q1,向客户端公开消息队列是否有意义?

A2:不,原因与 A2 相同。

消息队列暴露给 WebClient 时:

Q1:如果需要将消息队列提供程序从 Rabbit-Mq 更改为 Kafka 会发生什么?

A1:旧的移动应用程序将会崩溃。需要更改 Web 客户端以与新队列兼容。 (糟糕的架构

Q2:有人可以在同一个消息队列中同时访问另一个主题/队列吗?

A2:是的(糟糕的架构

当客户端是另一个服务时:

使用共享消息队列的服务间通信是许多应用程序用于异步通信的模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-18
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多