@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = "message", durable = "true"),
exchange = @Exchange(name = "pxm-message") //交换机名称,durable 指是否持久化到数据库,type:模式
, key = "message.test"
))
@RabbitHandler
public void testMessage(Message message, Channel channel) throws Exception {
//消费者操作
logger.info("*****messgae.test,开始消费*****");
if (message.getBody() != null) {
String competitions = new String(message.getBody());
logger.info("消费端接收到消息 1:{},{}", competitions, message.getMessageProperties());
}
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
}
按照 Routing key 的规则,这段代码应该只会消费 message.test 中的消息 但是这段代码执行后将 message.test2 的消息也消费了
1
yazinnnn 2021-01-28 16:23:05 +08:00
看上去你这是一个队列对一交换机 bind 了两个 routing key
message.test 只是你的 routing key 吧 |
2
xuanbg 2021-01-28 16:34:20 +08:00
消费是基于队列的,和 route-key 没关系。route-key 是用来发消息的,你只需要知道交换机和 route-key,不需要知道队列。
|
3
ty916 2021-01-28 17:22:00 +08:00
交换机的 type 是 fanout 还是 direct
|