欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

RabbitMQ消息可靠性(二)

时间:2023-06-14

#RabbitMQ消息可靠性(二)
上一篇文章我们介绍了如何确保RabbitMQ消息发送的可靠性。本节介绍消息消费的可靠性。


文章目录

一、推模式手动确认二、拉模式手动确认


一、推模式手动确认

spring: rabbitmq: virtual-host: / host: 127.0.0.1 port: 5672 username: guest password: guest listener: simple: ## 消息手动确认 acknowledge-mode: manual

@RabbitListener(queues = RabbitConfig.QUEUE_NAME) public void listenMessage(Message message, Channel channel){ long deliveryTag = message.getMessageProperties().getDeliveryTag(); try { byte[] body = message.getBody(); String s = new String(body); logger.info("message=====> {}",s); int i = 1/0; // 仅确认当前消息 channel.basicAck(deliveryTag,false); } catch (Exception e) { try { // 重新放入队列中 channel.basicNack(deliveryTag,false,true); } catch (IOException ioException) { ioException.printStackTrace(); } } }

二、拉模式手动确认

@Testvoid contextLoads() {long deliveryTag = 0;Channel channel = rabbitTemplate.getConnectionFactory().createConnection().createChannel(false);try {GetResponse response = channel.basicGet(RabbitConfig.QUEUE_NAME, false);deliveryTag = response.getEnvelope().getDeliveryTag();byte[] body = response.getBody();String s = new String(body);System.out.println(s);channel.basicAck(deliveryTag,false);} catch (Exception e) {try {channel.basicNack(deliveryTag,false,true);} catch (IOException ioException) {ioException.printStackTrace();}}}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。