Spring AMQP RabbitMQ 不消耗所有消息,工作人员过早完成

Spring AMQP RabbitMQ does not consume all messages, workers finish prematurely

我正在努力寻找合适的设置来延迟 RabbitMQ 中工作人员的超时。

默认情况下 prefetchCount 因为版本 2.0 设置为 250 并且正在接收和处理的邮件数量正是这个数量。 我想让工作人员保持忙碌,直到他们清理整个队列(比如说 10k 条消息)。

我可以手动操作这个数字,例如更改默认限制或分配更多线程导致默认数字成倍增加。

结果总是一样的。达到数量后,工作人员停止工作,应用程序完成执行

o.s.a.r.l.SimpleMessageListenerContainer : Successfully waited for workers to finish.

我希望他们在队列为空时完成。有什么想法吗?

logger.info("Successfully waited for workers to finish."); 只发生在一个地方 - doShutdown()。而这个是从shutdown()中调用的,这是从destroy()stop()中调用的。

我不知何故认为您出于某种原因退出了应用程序。你只是不阻止 main() 永久工作。

请分享一个我们可以玩的简单项目。