消费者从RabbitMQ收到消息并处理完成后,反馈给RabbitMQ,RabbitMQ收到反馈后才将此消息从队列中删除
我们也可以将其改成手工确认模式:
spring:
rabbitmq:
# 开启手动确认消息,如果消息重新入队,进行重试
listener:
simple:
acknowledge-mode: manual
重写之前的Handler:
package cn.com.codingce.listener;
import cn.com.codingce.config.RabbitMQConfig;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Slf4j
@Component
@RabbitListener(queues = RabbitMQConfig.QUEUE) // 监听的队列名称
public class HealthHra3MQListener {
@RabbitHandler
public void releaseCouponRecordAcknowledge(String body, Message message, Channel channel) throws IOException {
log.info("releaseCouponRecordAcknowledge three into");
long msgTag = message.getMessageProperties().getDeliveryTag();
System.out.println("msgTag=" + msgTag);
System.out.println("message=" + message.toString());
System.out.println("body=" + body);
// 成功确认,使用此回执方法后,消息会被 rabbitmq broker 删除
// channel.basicAck(msgTag,false); // 正常返回ACK确认信息
// channel.basicNack(msgTag,false,true); // 告诉broker,消息拒绝确认,最后一个true代表返回队列,为False代表丢弃
}
}
LOG
2023-11-12 21:38:31.780 INFO 13924 --- [nio-9090-exec-4] c.c.codingce.controller.SendController : 生产者到交换机通过confirmCallback 可靠性投递 confirmCallback
2023-11-12 21:38:31.787 INFO 13924 --- [ntContainer#0-1] c.c.c.listener.HealthHra3MQListener : releaseCouponRecordAcknowledge three into
msgTag=6
message=(Body:'新HRA3报告来了!!' MessageProperties [headers={}, contentType=text/plain, contentEncoding=UTF-8, contentLength=0, receivedDeliveryMode=PERSISTENT, priority=0, redelivered=false, receivedExchange=health_hra3_exchange, receivedRoutingKey=health.new, deliveryTag=6, consumerTag=amq.ctag-_KcmDv_gfhWjG1KAowHXSw, consumerQueue=health_hra3_queue])
body=新HRA3报告来了!!
2023-11-12 21:38:31.789 INFO 13924 --- [nectionFactory1] c.c.codingce.controller.SendController : confirm==== ack=true
2023-11-12 21:38:31.789 INFO 13924 --- [nectionFactory1] c.c.codingce.controller.SendController : confirm==== cause=null
2023-11-12 21:38:31.789 INFO 13924 --- [nectionFactory1] c.c.codingce.controller.SendController : 发送成功,null
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。