RabbitMQ实现ack-消息应答

1.yml配置

RabbitMQ实现ack-消息应答_第1张图片

 

2.监听者

@RabbitListener(queues = "ack.test")
public void handleMessage5(String data,Channel channel, Message message) {
System.out.println("ack.test接收到的消息 : " + data);
try {
Thread.sleep(5000L);
// channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); // 消息的标识,false只确认当前一个消息收到,true确认所有consumer获得的消息
// channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true); // ack返回false,并重新回到队列,api里面解释得很清楚
// channel.basicReject(message.getMessageProperties().getDeliveryTag(), true); // 拒绝消息
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true); // ack返回false,并重新回到队列,api里面解释得很清楚
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}

 

 

3.好处
消费者挂掉后,消息还可以再次消费

 

RabbitMQ实现ack-消息应答_第2张图片

 

消费出现问题时,可以再次消费,或分发给别的消费者

你可能感兴趣的:(mq,rabbitmq)