【问题标题】:How to cancel a particular job in a queue?如何取消队列中的特定作业?
【发布时间】:2018-10-17 01:58:37
【问题描述】:

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

假设有一个名为DO_SOMETHING 的作业计划在不久的将来作用于{ item: 'A'}

我的队列会有以下工作:

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

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

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

【问题讨论】:

    标签: node.js redis rabbitmq


    【解决方案1】:

    不能说“没有这样的工具”,因为我可能弄错了,但是 RabbitMQ 队列是先进先出的,所以你总是从头开始消费——按照作业产生的顺序。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 2014-06-02
      • 1970-01-01
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多