zoukankan      html  css  js  c++  java
  • rabbitmq-保证发送消息可靠性-方案

    **发送消息(发送端-交换机-队列)**
    
    总结:只有当消息确认ack为true且未执行失败回调方法时,才保证发送端消息已经成功发送!
    执行失败回调方法时,说明消息已经发送到(broker)交换机,交换机路由到队列出现了问题。此时需要我们自己来解决 发送端信息成功到交换机确认机制: 前提:开启消息确认 connectionFactory.setPublisherConfirms(
    true); 如果成功,会给发送端一个为true的ack,表示发送成功! 如果失败,会给发送端一个为false的ack,表示发送失败! 代码如下: /** * 发送端是否发送到交换机 */ public class RabbitmqConfirm implements RabbitTemplate.ConfirmCallback { /** * 发送端回调方法 * @param correlationData 发送到mq时传入的业务参数(例如:业务id) * @param ack 结果标志 * true: 发送端 ——> 交换机 成功 * false:发送端 ——> 交换机 失败 * @param message 结果消息:ack为true时,返回为null * ack为false时,返回失败消息 */ @Override public void confirm(CorrelationData correlationData, boolean ack, String message) { System.out.println(correlationData.getId()); System.out.println(ack); System.out.println(message); } } 交换机信息成功路由到队列确认机制: 前提:开启消息确认 connectionFactory.setPublisherConfirms(true); 开启失败回调 rabbitTemplate.setMandatory(true); 如果成功,则不会调用失败回调方法! 如果失败,则会调用失败回调方法! 代码如下: /** * 交换机是否发送到队列 */ public class RabbitmqReturnConfirm implements RabbitTemplate.ReturnCallback { /** * 交换机发送队列失败回调: * * 采用一个不存在的routingKey可做测试 * @param message 发送的消息+消息配置信息 * @param replyCode 状态码 * @param replyText 状态内容 * @param exchange 交换机 * @param routingKey 路由键 */ @Override public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) { System.out.println(message); System.out.println(replyCode); System.out.println(replyText); System.out.println(exchange); System.out.println(routingKey); } }



    依赖pom:
    
    
      <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-amqp</artifactId>
       <version>2.0.4.RELEASE</version>
      </dependency>
    
    
  • 相关阅读:
    流的概念(转自本站progor)
    Centos7安装OpenLDAP
    python发送post请求
    小计安装部署滴滴开源kafkamanager工具
    VSCode集成Cmder控制台输入中文乱码
    在win10的pycharm使用wsl中的python进行开发
    《Python数据科学手册》学习笔记及书评
    VSCode小说插件ReadNovel根据内容查找页码
    《TensorFlow实战Google深度学习框架(第二版)》学习笔记及书评
    Cmder启动WSL中的Ubuntu出现复制粘贴异常
  • 原文地址:https://www.cnblogs.com/yuefeng123/p/12658531.html
Copyright © 2011-2022 走看看