我知道AMQP并尝试为RabbitMQ系统制定通知体系结构。RabbitMQ - 主题交换 - 同一主题的两个或更多的消费者
我想要一个Topic交换(NotificationsExchange,我们假设),具体是因为我想灵活使用主题交换附带的路由键和队列,以及更多关于该主题未来扩展的选项。我可能是错误的,因为...
我也希望有两个或更多的消费者使用每个通知。作为基准,我希望每个发布的通知都能在数据库中结束。此外,我希望每个通知都可以被客户端应用程序使用(例如,Web应用程序使用并进一步推送套接字以便在没有db轮询的情况下立即通知用户)。
这听起来像是一个扇出式的情况,除了我不想这样做,因为我需要更多的队列来处理各种通知(我认为 - 对AMQP来说还是新手,并试图包裹我的头绕它)。
是否有可能让两个消费者从同一队列中得到通知(始终如一)?
例如:
- 推
Notif.NotifGroup.User.ThisUser
通过NotificationExchange - 有无
dbListener
结合Notif.#
- 有无
mvcClientListener
也结合Notif.#
(并且进一步确定用户是否在线并经由套接字下游推)
我不知道如果我在正确的轨道她即我正在读的是“多个消费者进入同一队列以循环方式进行负载均衡”,坦率地说,我不知道这意味着什么。
是否有可能有一个主题交流,其中两个消费者可以从一致同一个队列(例如,相同的路由键)读取相同的消息,或者我必须去与扇出交易所呢?
谢谢。
谢谢 - 我hadn”如果我可以根据相同的“推送标准”创建两个完全分开的队列(因为缺乏正确的术语 - 我将不得不更仔细地查看这些细节)。作为一个便笺,我今天早上开始深入研究RabbitMQ和AMQP,这是我在SO上看到的关于这个主题的第四篇文章(也可能有一两篇博文)我购买了一个几小时前的电子书。很有帮助。 – jleach
顺便说一下,如果偶然可以举一个快速的例子来说明如何创建这些单独的队列,那就太棒了。如果没有,我会最终找到它,但我认为我还没有发现它,并且RabbitMQ的内容似乎没有涵盖这种情况。再次感谢 – jleach
很高兴我的工作很有帮助! :)对于多个队列,它与创建单个队列并将其绑定到交换机的方式相同。但是您需要做两件事:1)确保每个应用程序实例只有1个RMQ连接,并且2)为每个使用者使用一个新的通道。 1连接,该连接中有许多通道。连接是昂贵且有限的。频道很便宜,几乎没有限制。所有真实的工作都是在频道上完成的,最简单的方法是有1个频道专用于1个事物。希望有所帮助! –