RabbitMQ让消费者在完成早期任务之前接收更多任务

时间:2013-03-08 16:12:50

标签: rabbitmq amqp producer-consumer

基于我对RabbitMQ / AMQP的理解,我看到了一个不幸的权衡。

通常的工作流程是:

  1. 制片人制作
  2. 队列传递给消费者
  3. 消费者确认并且在确认
  4. 之前不会收到更多任务
  5. 队列认为邮件处理已完成
  6. 所以问题是ack结合了两件事:说“我可以接受更多工作”,并说“我完成了这项任务。”问题是!我的消费者机器被分析为并行处理50个任务,每个任务最多需要30秒。但如果一项任务悬空或失败 - 需要重新交付。如何做到这一点?

1 个答案:

答案 0 :(得分:1)

使用

channel.basicQos(prefetchCount);

预取计数=我无需确认即可处理的任务数。

已记录,例如here