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>
    
    
  • 相关阅读:
    cocos2d-x项目101次相遇:在HelloWorld上--建立新场景
    MySQL优化之——日志
    Zoj2421 广搜
    GG链路过多port不足导致的报错OGG-01223
    java的InputStream和OutputStream的理解【转】
    JAVA编程规则
    JAVA的String 类
    JAVA的StringBuffer类
    android自带的处理Bitmap out Memory 的处理,我仅仅是改变了些写法成为自己用的东西
    NS3网络仿真(2):first.py
  • 原文地址:https://www.cnblogs.com/yuefeng123/p/12658531.html
Copyright © 2011-2022 走看看