当前位置:   article > 正文

rabbitmq--消费者(消费者没有报异常,但是接受不到消息了,channel通道关闭了。)_rabbitmq channel自动关闭

rabbitmq channel自动关闭

    最近,刚刚项目用起了rabbitmq消息对列,出现了一个错误,拿出来,让大家一起看看,避免一些常见错误。

    期初,我的消费者端是处理完数据后,通过channel.basicAck(envelope.getDeliveryTag(),false);来确认消息被成功消费掉了。如果出现其他情况包括异常,通过channel.basicReject(envelope.getDeliveryTag(),false);拒收消息。很正常,成功运行一段时间之后,我改了一下业务逻辑,不小心把上面的两个处理消息的方法写到了一起。也就是先确认消息被消费掉,然后又告诉服务器,消息被拒收。例如:

业务逻辑改前:

if(){

channel.basicAck(envelope.getDeliveryTag(),false);

}else{

channel.basicReject(envelope.getDeliveryTag(),false);

}

更改后:

if(){

channel.basicAck(envelope.getDeliveryTag(),false);

channel.basicReject(envelope.getDeliveryTag(),false);

}else{

channel.basicReject(envelope.getDeliveryTag(),false);

}

有意思不,哈哈哈,更改后的错误逻辑,导致channel通道关闭。并且没有报异常,甚是苦难,浪费了不少时间,希望给大家能避免此坑。

查问题期间,跟了一下rabbitmq的代码,由于初学rabbitmq,也没有弄明白为什么channel关闭了,并且没有报错。希望比较了解rabbitmq的同学能给与一些建议。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/603468
推荐阅读
相关标签
  

闽ICP备14008679号