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开始 这个修改会覆盖上面的大属性的修改 不过只适用于监听的某个队列
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。