首页 > 解决方案 > 用于聊天频道组播的 RabbitMQ

问题描述

假设我有一个简单的聊天应用程序,其中一些客户端可以向某个通道 X 发布消息,而一些客户端想要订阅 X 中的所有消息(基于通道的多播)。

我会为每个频道创建一个 Fanout Exchange,还是有办法为这个用例使用主题?

此外,添加到通道 X 的新客户端应该能够读取来自 X 的最后一条消息。这是如何完成的?

它会扩展到数百万个频道吗?

(或者我应该看看 MQTT?)

标签: rabbitmqrabbitmq-exchange

解决方案


RabbitMQ 主题交换(使用 pub/sub)绝对是创建这种分发模式的一个选项......生产者将确保他们的消息的路由密钥对应于“通道 X”,消费者(通过他们的队列)将绑定到这个与匹配的模式进行交换。这应该意味着您不需要为每个频道设置特定的 Exchange。但未知它是否可以扩展到数百万个频道。

如果考虑其他消息传递技术,也许看看 Solace?(仅供参考,我为他们工作)。我们实际上有一个免费的 Udemy 开发课程,您可以在其中构建一个聊天应用程序! https://www.udemy.com/fundamentals-of-solace-development/。如果你想走这条路,Solace 原生支持 MQTT,并且还具有内置的重播功能,可用于检索给定主题的最后n条消息。


推荐阅读