如何取消队列中的特定作业?

时间:2018-10-17 01:58:38

标签: node.js redis rabbitmq

我正在使用RabbitMQ建立作业队列。

我们假设有一项名为DO_SOMETHING的工作会在不久的将来对{ item: 'A'}起作用。

我的队列将执行以下任务:

[DO_SOMETHING { item: 'B' }, DO_SOMETHING { item: 'A' }, DO_SOMETHING { item: 'C' }] 

假设发生了一些事情,因此不再需要DO_SOMETHING { item: 'A' }

有没有办法从排队的作业中有选择地取消/删除它,还是应该只使用Redis之类的东西?

1 个答案:

答案 0 :(得分:0)

不能说“没有这样的工具”,因为我可能会误会,但是RabbitMQ队列是FIFO,因此您总是从头开始消耗-按照生产作业的顺序进行。

最简单的解决方案是在使用完作业后检查给定的作业是否已取消,并向Rabbit确认已处理该作业。

您可以使用外部机制,该机制可以过滤已删除的作业,但这可能需要一些同步和其他注意事项。