是否有一种方法可以限制RabbitMQ队列只从队列中向消费者发送固定数量的消息?
我有2个队列Q1和Q2以及10个消费者。每个消费者都可以……
我认为你已经完成了问题定义。你真正需要的是微不足道的,所以让我们稍微分解一下。
鉴于两个队列, Q1 和 Q2
Q1
Q2
的 对问题陈述的评论 强>
首先,假设队列是独立的。一个独立的过程 P 会有队列 Q 因此 Q1 服务过程 P1 。这是一个严格的数学要求 - 您无法为单个进程定义两个队列 P 。
P
Q
P1
因此,第二个约束在数学上是不正确的,原因与您无法编写接受类型参数的有效函数相同 string 和 bool 互换。它必须接受一个或另一个,因为它们不是兼容类型,或者它必须接受类型的单个共同祖先而不考虑子类型。这是一个变种 利斯科夫替代原则 。
string
bool
的 重新定义问题 强>
系统中共有12个消费者:
我们可以指定RabbitMQ中的任何配置,以便RabbitMQ仅将来自Q2的2条消息推送到任何免费的消费者,并且只有在确认后才推送下两个消息,即使其他消费者是免费的并准备好消费。
根据问题的新定义,您有两种选择:
Basic.Get
的 注意 强> 通过正确定义问题空间,我们已经消除了试图弄清楚如何确保只有两个消费者正在处理的基本问题 Q2 消息随时。
我很确定 消费者预取 将完成你想要的。但是,Q2只能让一个消费者为此工作。没有办法在多个消费者之间进行协调 - 您必须自己这样做,并且可以使用RabbitMQ进行协调。
<子> 注意: RabbitMQ团队监控 rabbitmq-users 邮件列表 并且有时只回答StackOverflow上的问题。 子>
rabbitmq-users