springboot项目中,如果使用@RabbitListener注解,此时消息的ack默认为auto,即为自动确认,如果想要使用手动确认可以进行设置。containerFactory属性可以让我们自定义container的一些属性,当然消息的确认方式也可以在这里进行确认。代码如下:
- containerFactory的自定义
@Bean
@ConditionalOnClass
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(CachingConnectionFactory connectionFactory) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setAcknowledgeMode(AcknowledgeMode.MANUAL);
return factory;
}
- 在使用地方将上述bean引用
// 此处的containerFactory属性值就是上述定义的Bean的name
@RabbitListener(containerFactory = "rabbitListenerContainerFactory", bindings = @QueueBinding(value = @Queue(value = "month", durable = "false"),
exchange = @Exchange(name = "fanout-exchange", durable = "false", type = "fanout")))
public void monthProcess(Channel channel, Message message){
}
本文介绍如何在SpringBoot项目中使用RabbitMQ并实现消息的手动确认,通过自定义SimpleRabbitListenerContainerFactory,设置AcknowledgeMode为MANUAL,确保消息处理成功后再确认,提高消息处理的可靠性。
1724

被折叠的 条评论
为什么被折叠?



