使用 Spring AMQP 监听许多短暂的、动态创建的队列

Listening to many short-lived, dynamically created queues with Spring AMQP

我正在使用 RabbitMQ/Spring/Spring AMQP 构建应用程序,但在处理我布置队列的方式时遇到了问题。

基本上我有一个每个消费者都听的队列,每条消息基本上都是 "this queue is ready to be processed by a single consumer"。然后消费者将监听消息中指示的队列,消费该队列中的所有消息,最后在完成后将其删除。

这些短暂的队列都是在数据进入进行处理时动态创建的,不能被多个消费者使用(在 'ready' 队列中获取消息)。

在这种情况下,我无法优雅地处理消费者。现在我只是在每次消费者从 'ready' 队列中获取消息时创建一个新的 DirectMessageListenerContainer,然后在它获取了所有需要的消息后停止它。看起来这个解决方案并不理想。有没有更好的方法来处理 Spring AMQP/RabbitMQ 这样的情况?

您可以在运行时add/remove 排队to/from 现有容器;使用直接容器更有效(参见 Choosing a container)。

MessagePropertiesconsumerQueue 属性 告诉您消息来自哪个队列。