我发现这张图片与我的商业模式非常相似。我需要将消息拆分到某个队列。对于一些繁重的工作。我可以为他们添加更多的工作线程。但对于一些没有太多繁重的工作。我可以让单个消费者订阅他们的消息。但是如何在rabbitMQ中做到这一点。通过他们的文件。我刚刚发现了单队列多消费者模型。
2 回答
- 您可以将多个工作人员添加到队列中
- 可以有多个队列绑定到一个交换。
在 RabbitMQ 中,生产者总是将消息发送到交换器。所以,在你的情况下,我希望只有一次交换就足够了。如果你想在消费者端进行负载均衡,你有上面说的两个选项。
你也可以阅读我的文章: https ://techietweak.wordpress.com/2015/08/14/rabbitmq-a-cloud-based-message-orientation-middleware/
RabbitMQ 有一个非常灵活的模型,可以实现各种各样的路由场景。
- 我需要将消息拆分到某个队列。对于一些繁重的工作。我可以为他们添加更多的工作线程。
是的,这是通过直接交换支持的。使用与队列名称相同的路由键发布消息。为方便起见,假设您使用完全限定的对象名称(例如MyApp.Objects.DataTypeOne
)。您需要做的就是为这个队列订阅多个消费进程,RabbitMQ 将使用循环方法进行负载平衡。
- 但对于一些没有太多繁重的工作。我可以让单个消费者订阅他们的消息。
是的,你也可以这样做。与上一段相同的过程。只是不要附加多个消费进程。
我发现这张图片与我的商业模式非常相似。
该图不是很有用,因为它缺少有关正在发布的消息类型的信息。从这个意义上说,它只是一个互连图。有趣的行是将队列连接到交换器的行,因为这是您通过Queue Bindings在 RabbitMQ 中指定的。您也可以将交换相互绑定,但这比我们可能需要做的要远一些。
作为 RabbitMQ/AMQP 系统的用户,图表上的所有其他内容都完全在您的控制之下。您可以创建任意数量的发布者,并拥有任意数量的消费进程,每个进程从任意数量的队列中消费。没有硬性限制和快速限制,尽管您可能需要考虑一些实际方面来确保您的系统是可维护的。