RabbitMQ订阅限制了要预取的消息数

时间:2017-05-10 15:08:35

标签: ruby-on-rails ruby rabbitmq bunny

我正在使用export type KeyMethod<T> = (data: T) => any; export interface DiffResult<T> { additions: T[]; updates: T[]; deletes: T[]; }; export type DiffMethod<T> = (oldState: T[], newState: T[]) => DiffResult<T>; it complains about this template vvv export const diffMethod: DiffMethod<T> = <T>(oldState: T[], newState: T[]) => { return { additions: [], updates: [], deletes: [] } }; 在rails上用ruby编写的rabbitmq之间进行通信。每项服务订阅microservices。所有服务均为topic,并根据需要作为多个实例运行。

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

是否有办法限制订阅可以获取的邮件数量,以便其他实例可以从队列中获取剩余的邮件。

1 个答案:

答案 0 :(得分:1)

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

回到rubybunny,链接提供必要信息,引用它:

  

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

     

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

ch1 = connection1.create_channel
ch1.prefetch(10)