Symfony Messenger 在所有高优先级消息之后消费低优先级消息

Symfony Messenger consume low priority messages after all high messages

有什么方法可以阻止消费者在所有高优先级消息都被消费之前吃掉低优先级消息吗?

我正在考虑检查低优先级消息处理程序中的队列状态,但这个解决方案似乎并不优雅而且可能很危险。

也许为时已晚,但我们找到了一种能够很好地满足我们需求的方法。

基本上,高优先级作业在数据库中写入lock。然后,当低优先级作业启动时,它首先检查锁:如果有,我们用延迟戳重新安排作业。

锁作为高优先级作业的一部分被删除,作为最后一步。然后,当低优先级作业再次到达时,就可以对其进行处理。通过这样做,我们能够管理三个具有不同优先级的队列。然而,我们的流程变得更加复杂。