新版RabbitMQ消息可靠性投递returnCallback

DBC 1.6K 0

交换机到队列

通过returnCallback

消息从交换器发送到对应队列失败时触发

两种模式

交换机到队列不成功,则丢弃消息(默认)
交换机到队列不成功,返回给消息生产者,触发returnCallback

首先配置

    #开启消息二次确认,交换机到队列的可靠性投递
    publisher-returns: true
    #为true,则交换机处理消息到路由失败,则会返回给生产者
    template:
      mandatory: true

测试方法

    /**
     * 交换机到队列的确定消息
     */
    @Test
    public void test6() {

        //为true,则交换机处理消息到路由失败,则会返回给生产者
        //开启强制消息投递(mandatory为设置为true),但消息未被路由至任何一个queue,则回退一条消息
        template.setReturnCallback(new RabbitTemplate.ReturnCallback() {
            @Override
            public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) {
                int code = replyCode;
                System.out.println("code="+code);
                System.out.println("message="+message);
                System.out.println("replyText="+replyText);
                System.out.println("exchange="+exchange);
                System.out.println("exchange="+routingKey);
            }

        });
        template.convertAndSend(RabbitMQConfig.EXCHANGE_NAME,"order.new","新订单来啦11");


    }

发表评论 取消回复
表情 图片 链接 代码

分享