【问题标题】:How to implement single-consumer-multi-queue model for rabbitMQrabbitMQ如何实现单消费者多队列模型
【发布时间】:2012-07-06 15:15:19
【问题描述】:

我发现这张图片与我的商业模式非常相似。我需要将消息拆分到某个队列。 对于一些繁重的工作。我可以为他们添加更多的工作线程。但对于一些没有太多繁重的工作。我能 让单个消费者订阅他们的消息。但是如何在rabbitMQ中做到这一点。 通过他们的文件。我刚刚发现了单队列多消费者模型。

【问题讨论】:

  • 查看Getting Started 教程。当我第一次看 RabbitMQ 时,我发现他们的教程和帮助非常好。具体来说,查看Topics 部分 - 例如,您可以根据路由键订阅多个队列。

标签: rabbitmq


【解决方案1】:
  1. 您可以将多个工作人员添加到队列中
  2. 可以有多个队列绑定到一个交换。

在 RabbitMQ 中,生产者总是将消息发送到交换器。所以,在你的情况下,我希望只有一次交换就足够了。如果你想在消费者端进行负载均衡,你有上面说的两个选项。

您也可以阅读我的文章: https://techietweak.wordpress.com/2015/08/14/rabbitmq-a-cloud-based-message-oriented-middleware/

【讨论】:

    【解决方案2】:

    RabbitMQ 有一个非常灵活的模型,可以实现多种路由场景。

    1. 我需要将消息拆分到某个队列。对于一些繁重的工作。我可以为他们添加更多的工作线程。

    是的,这是通过直接交换支持的。使用与队列名称相同的路由键发布消息。为方便起见,假设您使用完全限定的对象名称(例如MyApp.Objects.DataTypeOne)。您需要做的就是为这个队列订阅多个消费进程,RabbitMQ 将使用循环方法进行负载平衡。

    1. 但对于一些没有太多繁重的工作。我可以让单个消费者订阅他们的消息。

    是的,您也可以这样做。与上一段相同的过程。只是不要附加多个消费进程。

    我发现这张图片与我的商业模式非常相似。

    该图不是很有用,因为它缺少有关正在发布的消息类型的信息。从这个意义上说,它只是一个互连图。有趣的线是将队列连接到交换的线,因为这是您在 RabbitMQ 中通过Queue Bindings 指定的。您也可以将交换相互绑定,但这比我们可能需要做的要远一些。

    作为 RabbitMQ/AMQP 系统的用户,您可以完全控制图表上的所有其他内容。您可以创建任意数量的发布者,并拥有任意数量的消费进程,每个进程从任意数量的队列中消费。没有硬性和快速的限制,但您可能需要考虑一些实际方面来确保您的系统可维护。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多