springboot--@RabbitListener消息确认修改为手动确认
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){ }
然后,在代码里面进行自动确认,代码如下:(个人实验只要是有这行代码,不管是否是true还是false,都是确认,不加这段代码,消息还会一直存在于队列)
原文链接:https://blog.csdn.net/czw_xiaobei/article/details/103444344