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

RabbitMQ节流:队列限制/计数,包括未确认的消息,rabbitmq,Rabbitmq,我一直在尝试实现一种限制机制,这样一个队列中只有N条消息传递给消费者。这适用于类型至少为一次的分布式任务队列 我尝试过的两种方法基本上描述了: 提交到队列长度为N的队列,死信提交到另一个队列,该队列将被监视,并在MessageCount()再次小于N时重新提交到原始队列 提交到未使用的队列,观察该队列,并在MessageCount小于N时提交到已使用的队列。这在扩展观察者部分时存在问题 但是队列长度和消息计数都不计算未确认的(正在进行中),所以这不起作用 此外,我还简化了这一点,因为节流是按

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

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

  • 提交到队列长度为N的队列,死信提交到另一个队列,该队列将被监视,并在MessageCount()再次小于N时重新提交到原始队列

  • 提交到未使用的队列,观察该队列,并在MessageCount小于N时提交到已使用的队列。这在扩展观察者部分时存在问题

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

    此外,我还简化了这一点,因为节流是按tennant进行的,例如消息头

    我希望避免在运行时提供正确数量的使用者,因为这意味着要尝试调度和重新调度,例如,taskY类型的tennantX的有限5个使用者-而只是让taskY有一个使用者,以便通过预取平衡消耗。除非有一些拓扑重写可以完成,这至少是自愈的

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

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