Rabbitmq如何设置手动确认呢?
下文笔者讲述Rabbitmq设置手动确认的方法分享,如下所示
使用配置的方式
当代码中没有创建其他监听容器
可直接在配置文件中配置
spring.rabbitmq.listener.simple.acknowledge-mode=manual
然后在容器中将所以要声明的监听队列
每个都在用@Configuration注解的类中
用@Bean注解
最后在@RabbitListener注解方法中
使用channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);手动确认消息;
采用此种声明队列,就会被设置为 手动确认状态
例:
@RabbitListener(queues = "test")
public void receive(String info, Channel channel, Message msg) {
try {
logger.debug("consumer收到消息:" + msg);
// 手动确认,只确认当条消息
channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
}catch (Exception e){
logger.error(getStackTrace(e));
e.printStackTrace();
}
}
使用代码中约定的配置
使用@Configuration注解的类中 引入RabbitProperties修改其中的容器的确认方式 其实这个就是上面配置文件修改的属性例:
@Autowired
RabbitProperties rabbitProperties;
@PostConstruct
public void set() {
rabbitProperties.getListener().getSimple().setAcknowledgeMode(AcknowledgeMode.MANUAL);
}
@RabbitListener 注解的属性修改
注解中ackMode属性修改 从spring-rabbit-2.2-release.jar开始 这个修改会覆盖上面的大属性的修改 不过只适用于监听的某个队列
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


