springboot整合RabbitMQ消费者消息确认
1.开启ACK
manual:手动签收
none:自动签收
spring.rabbitmq.listener.direct.acknowledge-mode=manual
spring.rabbitmq.listener.simple.acknowledge-mode=manual
2.接收端代码
@Component
public class ReceiveMessage {
@RabbitListener(queues = "directQueue")//监听的队列名称 directQueue
public void process(Message message,Channel channel) throws IOException {
//消息编号
long deliveryTag = message.getMessageProperties().getDeliveryTag();
try{
System.out.println("directReceiver消费者收到消息 : " + message);
int a=10/0;//制造异常
channel.basicAck(deliveryTag,true);//手动签收
}catch (Exception e){
//参数3:true将消息放回原来队列中,false不把消息放入原队列中
channel.basicNack(deliveryTag,true,true);
}
}
}