Act Mode
Nack message requeue true
获取消息,但是不做ack应答确认,消息重新入队
Ack message requeue false
获取消息,应答确认,消息不重新入队,将会从队列中删除
reject requeue true
拒绝获取消息,消息重新入队
reject requeue false
拒绝获取消息,消息不重新入队,将会被删除
代码中的手动消费
// 消息处理完成,手动确认提交 // deliveryTag 该消息的index // multiple:是否批量 true:将一次性ack所有小于deliveryTag的消息。 channel.basicAck(envelope.getDeliveryTag(), false);
源码分析:https://www.cnblogs.com/yibutian/p/9469057.html
public void sureAck(Channel channel, String queueName, Map<GetResponse, String> responseMap) { ArrayList<GetResponse> responseList = new ArrayList<>(); responseMap.forEach((ack, message) -> { responseList.add(ack); }); responseList.forEach(ack -> { try { channel.basicAck(ack.getEnvelope().getDeliveryTag(), false); } catch (IOException e) { e.printStackTrace(); } }); }