V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
missz
V2EX  ›  Java

rabbitmq 关于 Routing key 的疑问

  •  2
     
  •   missz · 2021-01-28 15:25:53 +08:00 · 1424 次点击
    这是一个创建于 1156 天前的主题,其中的信息可能已经有所发展或是发生改变。
        @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 的消息也消费了

    yp1X7T.png

    3 条回复    2021-01-28 17:22:00 +08:00
    yazinnnn
        1
    yazinnnn  
       2021-01-28 16:23:05 +08:00
    看上去你这是一个队列对一交换机 bind 了两个 routing key

    message.test 只是你的 routing key 吧
    xuanbg
        2
    xuanbg  
       2021-01-28 16:34:20 +08:00
    消费是基于队列的,和 route-key 没关系。route-key 是用来发消息的,你只需要知道交换机和 route-key,不需要知道队列。
    ty916
        3
    ty916  
       2021-01-28 17:22:00 +08:00
    交换机的 type 是 fanout 还是 direct
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5303 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 09:09 · PVG 17:09 · LAX 02:09 · JFK 05:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.