我正在使用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
状态中没有消息。
是否有办法限制订阅可以获取的邮件数量,以便其他实例可以从队列中获取剩余的邮件。
答案 0 :(得分:1)
根据您提供的信息,我假设您正在使用rubybunny。如果这个假设不正确(还有其他可用于rabbitmq的ruby客户端),请告诉我和/或查看与您的客户相关的文档。
回到rubybunny,链接提供必要信息,引用它:
对于多个消费者共享队列的情况,它很有用 能够指定每个消费者一次可以发送多少条消息 在发送下一个确认之前。
在AMQP 0.9.1中,这称为QoS或消息预取。 预取是基于每个通道配置的。 要配置预取,请使用Bunny :: Channel#prefetch方法,如下所示:
ch1 = connection1.create_channel
ch1.prefetch(10)