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){
}