具有单队列的 Rabbit MQ 中的多生产者、多消费者

Posted

技术标签:

【中文标题】具有单队列的 Rabbit MQ 中的多生产者、多消费者【英文标题】:Multi producer, multi consumer in Rabbit MQ with single queue 【发布时间】:2015-02-14 16:01:17 【问题描述】:

我是 RabbitMQ 的新手,我需要编写一个具有多生产者和多消费者以及单个队列的程序。这可以做我在图片中显示的吗?我找到了很多例子,但它们都是由单一生产者提供的。任何生产者都向任何消费者发送消息。

【问题讨论】:

【参考方案1】:

简而言之,答案是绝对可以让多个生产者发布到单个队列。我建议您创建一个交换并让您的生产者将内容发送到交换然后转发到队列。在您的简单图中,交换并不是绝对必要的,但它使您的解决方案在未来更具可扩展性。

【讨论】:

老实说,您不需要交换使用此示例rabbitmq.com/tutorials/tutorial-two-dotnet.html 并添加更多生产者发送到同一队列。排队的项目将按照收到的顺序排列,您将无法分辨是哪个队列发送的。这是一个工作队列,因此每条消息只发送给一个未复制的消费者。如果您需要所有消费者查看所有消息,那么您需要进行不同的设置。 这正是我需要知道的。谢谢。 @robthewolf 您说得对,我们将来可能需要扩展解决方案。 @jhilden @Diana,根据经验,我建议您始终发布到交易所而不是直接发布到队列。您会发现未来的交流非常有用,最好有一个一致的流程。

以上是关于具有单队列的 Rabbit MQ 中的多生产者、多消费者的主要内容,如果未能解决你的问题,请参考以下文章

rocketMQ安装配置+与java交互API操作+集群搭建+高级特性

并发无锁队列

lockFreeQueue 无锁队列实现与总结

Rabbit MQ部署步骤

Posix消息队列

多线程生产者消费者模式中,如何停止消费者?多生产者情况下对“毒丸”策略的应用。