RabbitMQ工作队列配置问题

时间:2013-01-30 15:57:14

标签: rabbitmq message-queue amqp

我有两个关于RabbitMQ工作队列的问题:

  1. 正如我从RabbitMQ教程中理解的那样,似乎如果我有一个基本的队列使用者客户端(只是一个基本的“Hello,World!”使用者),然后我为同一个队列添加了第二个使用者客户端然后RabbitMQ将以循环方式自动在这两个队列之间分配消息。这是真的(没有添加任何额外的配置)?

  2. 我的客户客户端配置为只使用(GetResponse response = channel.basicGet("my_queue", false)一次收到一条消息。由于我一次只收到一条消息,是否仍需要设置prefetchCount(channel.basicQos(1))以进行公平调度?

1 个答案:

答案 0 :(得分:2)

您的问题的答案:

  1. 没有
  2. 但是,您的两个问题1和2不兼容。如果您使用的是消费者,则会将消息推送到消费者,并且您不使用Basic.Get。当您使用消费者时,您需要使用Basic.QoS来指定消费者一次只能“拥有”一个未确认的消息。 RabbitMQ不会推送超出QoS限制的其他消息。

    你的另一种选择是使用Basic.Get从队列中“拉出”,并且你将控制自己的命运,直到你一次运行多少条消息。

    这有意义吗?