我有一个RM队列test-queue。在那里,我需要为3个独立的服务中的3个独立进程处理3个独立的消息(message-1, message-2, message-3)。
我使用如下所示的@RabbitListener来访问消息
@RabbitListener(queues = "test-queue")
public void getMessage1(Message message) {
System.out.println(message);
}但是我只需要在这个函数中访问特定的消息ex:message-1。
有什么头绪吗?
发布于 2021-02-15 22:25:56
这是AMQP协议的错误设计。您需要为这些消息考虑3个不同的队列,并使用适当的路由从单个交换中更正它们的绑定。然后,您可以轻松地从这些队列中获得3个消费者。
我的观点是,队列实体是消费者的责任。生产者只是将一条消息转储到一个交换中。因此,您只需从您的消费者应用程序中指定您希望如何获得生成的消息。
如果您确实不能更改您的RabbitMQ结构,您可以研究Spring Integration路由器模式的实现:https://docs.spring.io/spring-integration/docs/current/reference/html/message-routing.html#messaging-routing-chapter
https://stackoverflow.com/questions/66201944
复制相似问题