订阅 RMQ 消息队列中的特定消息
Subscribe specific message in RMQ message queue
我有一个 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
。
有什么注意事项吗?
这是 AMQP 协议的错误设计。您需要为这些消息考虑 3 个不同的队列,并通过正确的路由从单个交换中为它们正确绑定。然后你可以很容易地从这些队列中获得 3 个消费者。
我的观点是队列实体是消费者的责任。生产者只是将消息转储到交换中。因此,您只需从您的消费者应用程序中指定您希望如何获取生成的消息。
如果你真的不能改变你的 RabbitMQ 结构,你可以研究 Spring 集成路由器模式实现:https://docs.spring.io/spring-integration/docs/current/reference/html/message-routing.html#messaging-routing-chapter
我有一个 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
。
有什么注意事项吗?
这是 AMQP 协议的错误设计。您需要为这些消息考虑 3 个不同的队列,并通过正确的路由从单个交换中为它们正确绑定。然后你可以很容易地从这些队列中获得 3 个消费者。
我的观点是队列实体是消费者的责任。生产者只是将消息转储到交换中。因此,您只需从您的消费者应用程序中指定您希望如何获取生成的消息。
如果你真的不能改变你的 RabbitMQ 结构,你可以研究 Spring 集成路由器模式实现:https://docs.spring.io/spring-integration/docs/current/reference/html/message-routing.html#messaging-routing-chapter