RabbitMQ 限制:队列限制/计数,包括未确认的消息

时间:2021-05-05 16:25:10

标签: rabbitmq

我一直在尝试实现一种限制机制,这样只有 N 条消息从队列传递给消费者。这适用于至少一次类型的分布式任务队列。

我尝试过的两种方法,基本上描述了:

  1. 提交到一个队列长度为 N 的队列,死信到另一个被观察的队列,当 MessageCount() 再次小于 N 时重新提交到原来的队列。

  2. 提交到一个未使用的队列,观察它,并在 MessageCount 小于 N 时提交到已使用的队列。这在扩展观察器部分时有问题。

但是队列长度和消息计数都不计算未确认(进行中),所以这不起作用。

此外,我已经简化了一点,因为节流是每个租户的,例如一个消息头。

我想避免在运行时调出正确数量的消费者,因为这意味着尝试安排和重新安排,例如类型 taskY 的 TennantX 的有限 5 个消费者 - 而只是有 taskY 的消费者,以便通过预取来平衡消费。除非有一些拓扑重写可以完成,至少可以自我修复。

我还想避免将计数器存储在数据库中,因为这可能会与队列不同步并导致死锁。

我也一直在研究其他消息/总线/任务框架,但我想知道在我缺少的 rabbitMQ 中是否有很好的方法来做到这一点?

0 个答案:

没有答案