【发布时间】:2017-09-20 17:33:07
【问题描述】:
我有一个架构问题。
我知道什么代表(扇出、直接、主题、标头)交换、绑定、队列以及有关消息架构的几乎所有内容。我有以下问题,我需要一些建议。
我想在我的应用程序中实现通知逻辑,每个用户都将收到仅针对他的实时通知。 (实际上,我不想提及我的 UI 和 BE 语言/框架是什么,因为额外的抽象级别) UI 将使用 WebSocket、SockJS 和 STOMP 连接到 RabbitMQ。我的 UI 将只是一个消费者,BE 是编写者——那个,它将向 RabbitMQ 添加一些消息。
如果我有一个带有路由键的直接交换,我非常清楚,它唯一地标识特定用户(例如:my-routing-to-empoyee-with-id-1)和 N 个队列每个用户。这对我来说太重了(我实际上不知道有这么多队列是否正常)。
是否有任何解决方案,我只能使用一个队列,并且只将消息传递给预期的用户?
我知道一个解决方案,我可以在其中进行主题交换并拥有一个作者和多个订阅者,但是这样,我只能在客户端级别过滤消息,这不太安全。 :(
【问题讨论】:
-
你考虑过不使用队列吗?你真的需要排队 UI 将收到的那些消息吗?我会离开队列,只使用一些通知存储。你的 UI 连接到它并读取消息
-
嗨,Alex,当然,我将使用没有 WebSockets 通信和 RabbitMQ 的短轮询机制。每次我向服务器发出一些异步请求时,这种短池都会起作用,但至少有 1 个最小间隔。这样,我不会永远保持会话,另一方面,我将进行优化检查。但是,我上面的问题对我来说是一个有趣的话题。我很高兴阅读一些 cmets 和提案。
标签: websocket rabbitmq message-queue