RabbitMq手动消息确认时:
如果用:
//第二个参数,true会重新放回队列,所以需要自己根据业务逻辑判断什么时候使用拒绝 channel.basicReject(deliveryTag, true);
重新放回队列的消息,会放在队列末尾,其DeliveryTag也是最后面的依次递增重新排号
eg:队列中6个消息,其DeliveryTag会从1开始依次递增:
1、2、3、4、5、6
如果1和2被Reject回消息队列了,其它都没有手动确认
那么再次消费队列就会发现,只能消费到7、8号消息,且消息与原来的1、2号一样。因为3 4 5 6没有手动确认,是unacked状态,所以消费到
3、4、5、6、7、8
原文链接:https://blog.csdn.net/TAaron666/article/details/116163231
发表评论