向Web客户端公开消息传递队列?

问题描述

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

我们这里可能的选项是:

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

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

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

解决方法

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

让我做一些问答,以此来回答您的问题

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

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

第二季度:基于第一季度,向客户端公开消息传递队列是否有意义?

A2:不,出于与A2相同的原因。

当消息传递队列暴露给WebClient时:

问题1:如果需要将消息队列提供者从Rabbit-Mq更改为Kafka,会发生什么?

A1 :旧的移动应用程序将损坏。为了与新队列兼容,需要更改Web客户端。 (不良体系结构

第二季度:有人可以在同一个消息队列中同时点击另一个主题/队列吗?

A2 :是(不良体系结构

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...