0

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

通常的工作流程是:

  1. 生产者生产
  2. 队列交付给消费者
  3. 消费者确认并在确认之前不会收到更多任务
  4. 队列认为消息处理完成

所以问题是 ack 结合了两件事:说“我可以接受更多的工作”和说“我已经完成了这项任务”。问题是!我的消费者机器被配置为并行处理 50 个任务,每个任务最多需要大约 30 秒。但是,如果一项任务悬而未决或失败 - 它需要重新交付。如何做到这一点?

4

1 回答 1

1

采用

channel.basicQos(prefetchCount);

其中预取计数 = 我可以在不确认的情况下处理的任务数。

记录在这里

于 2013-03-08T16:42:39.033 回答