新版RabbitMQ消息可靠性投递confirmCallback

DBC 1.6K 0
首先先开启消息确认
 #开启消息二次确定,生产者到broker的交换机
    publisher-confirm-type: correlated
测试类
    /**
     * 发送需要确定的订单
     */
    @Test
    public void test5() {
        template.setConfirmCallback(new RabbitTemplate.ConfirmCallback() {
            /**
             *
             * @param correlationData 配置
             * @param ack 交换机是否收到消息,true是成功,false是失败
             * @param cause 失败的原因
             */
            @Override
            public void confirm(CorrelationData correlationData, boolean ack, String cause) {
                System.out.println("confirm=====>");
                System.out.println("confirm==== ack="+ack);
                System.out.println("confirm==== cause="+cause);
                if (ack){
                    System.out.println("发送成功!");
                    //更新数据库  消息状态为成功  TODO

                }else {
                    System.out.println("发送失败,记录到日志,数据库!");

                    //更新数据库  消息状态为失败  TODO

                }
            }
        });
        //数据库新增一个消息记录,状态是发送  //TODO

        //发送消息
        template.convertAndSend(RabbitMQConfig.EXCHANGE_NAME,"order.new","新订单");
    }

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

分享