向 Web 客户端公开消息队列?
Exposing messaging queue to web clients?
考虑一个实时应用程序,其中 Web 客户端与某个实体 X 建立持久连接。
我们这里可能的选择是:
- 连接到 Web 服务器,然后将消息发送到消息队列。
在这种情况下,实体 X 等于某个 Web 服务器,然后将该消息转发到消息队列。
|=Backend=
(client) ----------|-(web server)-----------(messageq)------> process message
| ^--backchannel connection
- 直接连接到消息队列。
在这种情况下,Web 客户端直接连接到消息队列端点并推送消息。
|=Backend=
(client) ----------|-(messageq)------> process message
|
此处推荐的最佳做法是什么?消息队列位于 标准企业架构 中的什么位置?此外,如果您知道最佳实践,请分享您是如何学习该信息的(哪些资源/书籍包含这些知识?)。谢谢。
当客户端是web-browser:
让我做一些问答,您的问题可能会得到解答
Q1:我们是否将应用程序数据库暴露给我们的客户,以进行简单的读取操作?
A1: 不,我们要控制向客户端公开的内容
Q2: 根据 Q1,向客户端公开 messaging-queue 是否有意义?
A2: 没有,原因同A2.
当 messaging-queue 暴露给 WebClient 时:
问题 1: 如果消息队列提供程序需要从 Rabbit-Mq 更改为 Kafka,会发生什么情况?
A1: 旧的移动应用程序会崩溃。 Web-Client 需要更改以与新队列兼容。 (糟糕的架构)
Q2: 有人可以接入另一个 topic/queue 以及 with-in 相同的 messaging-queue 吗?
A2: 是(糟糕的架构)
当客户端为其他服务时:
Inter-service 使用共享 messaging-queue 的通信是许多应用程序用于 async-communication 的模式。
考虑一个实时应用程序,其中 Web 客户端与某个实体 X 建立持久连接。
我们这里可能的选择是:
- 连接到 Web 服务器,然后将消息发送到消息队列。
在这种情况下,实体 X 等于某个 Web 服务器,然后将该消息转发到消息队列。
|=Backend=
(client) ----------|-(web server)-----------(messageq)------> process message
| ^--backchannel connection
- 直接连接到消息队列。
在这种情况下,Web 客户端直接连接到消息队列端点并推送消息。
|=Backend=
(client) ----------|-(messageq)------> process message
|
此处推荐的最佳做法是什么?消息队列位于 标准企业架构 中的什么位置?此外,如果您知道最佳实践,请分享您是如何学习该信息的(哪些资源/书籍包含这些知识?)。谢谢。
当客户端是web-browser:
让我做一些问答,您的问题可能会得到解答
Q1:我们是否将应用程序数据库暴露给我们的客户,以进行简单的读取操作?
A1: 不,我们要控制向客户端公开的内容
Q2: 根据 Q1,向客户端公开 messaging-queue 是否有意义?
A2: 没有,原因同A2.
当 messaging-queue 暴露给 WebClient 时:
问题 1: 如果消息队列提供程序需要从 Rabbit-Mq 更改为 Kafka,会发生什么情况?
A1: 旧的移动应用程序会崩溃。 Web-Client 需要更改以与新队列兼容。 (糟糕的架构)
Q2: 有人可以接入另一个 topic/queue 以及 with-in 相同的 messaging-queue 吗?
A2: 是(糟糕的架构)
当客户端为其他服务时:
Inter-service 使用共享 messaging-queue 的通信是许多应用程序用于 async-communication 的模式。