我有两个关于RabbitMQ工作队列的问题:
正如我从RabbitMQ教程中理解的那样,似乎如果我有一个基本的队列使用者客户端(只是一个基本的“Hello,World!”使用者),然后我为同一个队列添加了第二个使用者客户端然后RabbitMQ将以循环方式自动在这两个队列之间分配消息。这是真的(没有添加任何额外的配置)?
我的客户客户端配置为只使用(GetResponse response = channel.basicGet("my_queue", false)
一次收到一条消息。由于我一次只收到一条消息,是否仍需要设置prefetchCount(channel.basicQos(1)
)以进行公平调度?
答案 0 :(得分:2)
您的问题的答案:
但是,您的两个问题1和2不兼容。如果您使用的是消费者,则会将消息推送到消费者,并且您不使用Basic.Get
。当您使用消费者时,您需要使用Basic.QoS
来指定消费者一次只能“拥有”一个未确认的消息。 RabbitMQ不会推送超出QoS限制的其他消息。
你的另一种选择是使用Basic.Get
从队列中“拉出”,并且你将控制自己的命运,直到你一次运行多少条消息。
这有意义吗?