0

我正在使用ruby​​ on railsrabbitmq之间进行通信。microservices每个服务订阅一个topic. 所有服务都scaled根据需要作为多个实例运行。

在订阅期间从队列进入bunny状态。这使得其他扩展实例只是空闲,因为状态中没有消息。all the messagesunackedready

有没有办法限制订阅可以获取的消息数量,以便其他实例可以从队列中获取剩余的消息。

4

1 回答 1

1

根据您提供的信息,我假设您正在使用ruby​​bunny。如果这个假设不正确(还有其他可用于 rabbitmq 的 ruby​​ 客户端),请告诉我和/或查看与您的客户端相关的文档。

回到 ruby​​bunny,提供的链接指向必要的信息,引用它:

对于多个消费者共享一个队列的情况,能够指定每个消费者可以在发送下一个确认之前一次发送多少条消息是很有用的。

在 AMQP 0.9.1 中,这称为 QoS 或消息预取。预取是基于每个通道配置的。要配置预取,请使用 Bunny::Channel#prefetch 方法,如下所示:

ch1 = connection1.create_channel
ch1.prefetch(10)
于 2017-05-10T18:54:19.487 回答