我正在使用 RabbitMQ/Spring/Spring AMQP 构建一个应用程序,但在处理我布置队列的方式时遇到问题。
本质上,我有一个每个消费者都会监听的队列,每条消息基本上都在说“这个队列已准备好由单个消费者处理”。然后,消费者将监听消息中指示的队列,消费该队列中的所有消息,最后在完成后将其删除。
这些短暂的队列都是在数据进入进行处理时动态创建的,并且不能被多个消费者使用(无论哪个消费者在“就绪”队列中获取消息)。
在这种情况下,我无法优雅地处理消费者。现在,每次消费者从“就绪”队列中获取消息时,我都会创建一个新的 DirectMessageListenerContainer ,然后在获取所需的所有消息后停止它。看来这个解决方案并不理想。有没有更好的方法来使用 Spring AMQP/RabbitMQ 处理这样的情况?
最佳答案
您可以在运行时向现有容器添加队列或从现有容器中删除队列;使用直接容器会更高效(请参阅 Choosing a container )。
MessageProperties
具有 consumerQueue
属性来告诉您消息来自哪个队列。
关于java - 使用 Spring AMQP 监听许多短暂的、动态创建的队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58189110/