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