0

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

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

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

4

1 回答 1

2

回答您的问题:

  1. 是的

但是,您的两个问题 1 和 2 不兼容。如果您使用的是消费者,它旨在将消息推送给它,而您不使用Basic.Get. 当您使用消费者时,您需要使用Basic.QoS来指定消费者一次只能“拥有”一条未确认的消息。RabbitMQ 不会推送超出 QoS 限制的额外消息。

您的替代方法是使用 从队列中“拉” Basic.Get,您将控制自己的命运,只要您一次运行多少条消息。

这有意义吗?

于 2013-01-30T23:18:08.847 回答