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

时间:2020-07-30 12:28:24

标签: asynchronous symfony4 symfony-messenger

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

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

1 个答案:

答案 0 :(得分:1)

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

基本上,高优先级作业在 DB 中写入一个 lock。然后,当低优先级作业开始时,它首先检查锁:如果它在那里,我们用延迟戳重新安排作业。

作为高优先级作业的一部分,作为最后一步,锁被移除。然后,当低优先级作业再次到达时,它可以被处理。通过这样做,我们能够管理具有不同优先级的三个队列。但是,我们在流程中增加了复杂性。