栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

解决rabbitMQ消息发送成功,但ConfirmCallback的ack返回为false问题

解决rabbitMQ消息发送成功,但ConfirmCallback的ack返回为false问题

clean channel shutdown; protocol method: #method(reply-code=200, reply-text=OK, class-id=0, method-id=0)
今天在学RabbitMQ消息可靠性投递的/confirm/i模式时候,出现上述问题,但这时RabbitMQ的队列中消息已经存在了。只是ack返回为false,如下图:

@SpringBootTest
@RunWith(SpringRunner.class)
public class producerConfirm {

    @Autowired
    private RabbitTemplate rabbitTemplate;


    @Test
    public void testConfirm() throws InterruptedException {
//        定义回调
        rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() {
            public void confirm(CorrelationData correlationData, boolean ack, String cause) {
                System.out.println("回调函数执行了");
                if (ack){
                    System.out.println("已正确发送到exchange");
                }else {
                    System.out.println("发送到exchange失败" + cause);
                }
            }
        });

        rabbitTemplate.convertAndSend(RabbitMQ/confirm/iConfig.EXCHANGE_NAME,"boot.hehe","发送消息");
    }




}

控制台输出为:

当发送方法结束,RabbitMQ相关的资源也就关闭了,虽然我们的消息发送出去,但异步的/confirm/iCallback却由于资源关闭而出现了上面问题

所以在发送结束后,让它等待一会

@SpringBootTest
@RunWith(SpringRunner.class)
public class producerConfirm {

    @Autowired
    private RabbitTemplate rabbitTemplate;


    @Test
    public void testConfirm() throws InterruptedException {
//        定义回调
        rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() {
            public void confirm(CorrelationData correlationData, boolean ack, String cause) {
                System.out.println("回调函数执行了");
                if (ack){
                    System.out.println("已正确发送到exchange");
                }else {
                    System.out.println("发送到exchange失败" + cause);
                }
            }
        });

        rabbitTemplate.convertAndSend(RabbitMQ/confirm/iConfig.EXCHANGE_NAME,"boot.hehe","发送消息");
Thread.sleep(2000);
    }





}

再次发送发现可以了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/747535.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号