rabbitmq 关于 Routing key 的疑问

2021-01-28 15:25:53 +08:00
 missz
    @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 的消息也消费了

1453 次点击
所在节点    Java
3 条回复
yazinnnn
2021-01-28 16:23:05 +08:00
看上去你这是一个队列对一交换机 bind 了两个 routing key

message.test 只是你的 routing key 吧
xuanbg
2021-01-28 16:34:20 +08:00
消费是基于队列的,和 route-key 没关系。route-key 是用来发消息的,你只需要知道交换机和 route-key,不需要知道队列。
ty916
2021-01-28 17:22:00 +08:00
交换机的 type 是 fanout 还是 direct

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/749257

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX