当前位置:   article > 正文

RabbitMQ消息确认机制_rabbitmq生产者确认机制

rabbitmq生产者确认机制

消息确认

基本流程

说明:

  • 生产者发送消息到RabbitMQ Server后,RabbitMQ Server需要对生产者进行消息Confirm确认。
  • 消费者消费消息后需要对 RabbitMQ Server进行消息ACK确认。

消息确认模式

RabbitMq提供了两种消息发送者确认模式分别为: ConfirmCallback确认模式和 ReturnCallback退回模式。

ConfirmCallback确认模式

  1. @Component
  2. public class RabbitConfirmConfig implements ConfirmCallback
  3. {
  4. private Logger logger = LoggerFactory.getLogger(RabbitConfirmConfig.class);
  5. public void confirm(CorrelationData correlationData, boolean ack,
  6. String cause)
  7. {
  8. logger.info("数据内容:{}",correlationData);
  9. logger.info("是否确认成功:{}",ack);
  10. logger.info("错误原因:{}",cause);
  11. if (!ack)
  12. {
  13. logger.info("exchange produce confirm message send error" + cause);
  14. }
  15. else
  16. {
  17. logger.info("exchange produce confirm message send success");
  18. }
  19. }
  20. }
  21. 复制代码

说明:ConfirmCallback模式确认,需要重写confirm接方法,此方法的三个参数分别为:CorrelationData、ack、cause

  • CorrelationData:对象内部只有一个id属性,用来表示当前消息的唯一性。
  • ack:消息投递状态,true表示投递成功
  • cause: 消息投递失败原因

虽然消息被broker接收到只能表示已经到达MQ服务器,但是并不能保证消息一定会被投递到目标 queue里。所以我们需要实现returnCallback来进行相关处理。

ReturnCallback退回模式

  1. @Component
  2. public class RabbitReturnConfig implements ReturnCallback
  3. {
  4. private Logger logger = LoggerFactory.getLogger(RabbitReturnConfig.class);
  5. public void returnedMessage(Message message, int replyCode,
  6. String replyText, String exchange, String routingKey)
  7. {
  8. logger.info("消息发送送到队列信息:");
  9. logger.info("发生消息:{}",message);
  10. logger.info("回应码:{}",replyCode);
  11. logger.info("回应信息:{}",replyText);
  12. logger.info("交换机:{}",exchange);
  13. logger.i
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/395107?site
推荐阅读
相关标签
  

闽ICP备14008679号