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

标签 java rabbitmq spring-amqp spring-rabbit

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

本质上,我有一个每个消费者都会监听的队列,每条消息基本上都在说“这个队列已准备好由单个消费者处理”。然后,消费者将监听消息中指示的队列,消费该队列中的所有消息,最后在完成后将其删除。

这些短暂的队列都是在数据进入进行处理时动态创建的,并且不能被多个消费者使用(无论哪个消费者在“就绪”队列中获取消息)。

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

最佳答案

您可以在运行时向现有容器添加队列或从现有容器中删除队列;使用直接容器会更高效(请参阅 Choosing a container )。

MessageProperties 具有 consumerQueue 属性来告诉您消息来自哪个队列。

关于java - 使用 Spring AMQP 监听许多短暂的、动态创建的队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58189110/

相关文章:

java - 如何使用 spring boot 多个用户通过rabbitmq发送消息

java - 问题处理 RabbitMq Listener 抛出的异常

java - 向 eventhub 发送和接收消息引发 amqp 异常

java - 如何使我的网站与 servlet 通信?

c# - RabbitMQ 只处理 50 条消息然后阻塞

c# - Rabbitmq 空闲连接断开

java - spring-amqp 请求/回复消息传递的空响应

java - 可以使用 instanceof 运算符来实现两个并行的函数层次结构和它们的参数吗?

Java "synchronized"在对象类或调用类中

python - Celery 任务未被处理