当前位置: 首页 > news >正文

网站规划建设实训报告凡科网免费建站官网

网站规划建设实训报告,凡科网免费建站官网,商城网站建设模板下载,保山网站开发服务RabbitMQ消息的可靠性 一 生产者的可靠性 生产者重试 有时候由于网络问题,会出现连接MQ失败的情况,可以配置重连机制 注意:SpringAMQP的重试机制是阻塞式的,重试等待的时候,当前线程会等待。 spring:rabbitmq:conne…

RabbitMQ消息的可靠性

一 生产者的可靠性

  1. 生产者重试
    有时候由于网络问题,会出现连接MQ失败的情况,可以配置重连机制
    注意:SpringAMQP的重试机制是阻塞式的,重试等待的时候,当前线程会等待。
spring:rabbitmq:connection-timout: 1s #设置MQ的连接超时时间templete:retry:enabled: true #开启超时重试机制initial-interval: 100ms #失败后的初始等待时间multipier: 1 #失败后下次的等待时长倍数, 下次等待时长=initial-interval*multipiermax-attempts: 3 #最大重试次数
  1. 生产者确认

    (1)在生产者服务的yaml文件中配置一下内容
spring:rabbitmq:publisher-confirm-type: correlated #开启publisher confirm机制,并设置为MQ异步回调方式返回回执信息publisher-returns: true #开启publisher return机制

(2)配置return-callback

@Slf4j
@Configuration
public class CommonConfig implements ApplicationContexAware{@Overridepublic void setApplicationContext(ApplicationContent applicationContext){// 获取MQRabbitTemplate rabbitTemplate = applicationContext.getBean(RabbitTemplate.class);// 设置returnCallbackrabbitTemplate.setReturnCallback((message,replyCode,replyText,exchange,routingKey)->{log.info("消息发送失败,应答码:{},原因:{},交换机:{},路由键:{},消息:{}",replyCode,replyText,exchange,routingKey,message.toString());
});}
}

(3)发送消息,指定消息ID,消息的ConfirmCallback
相比于发布消息,多了消息的confirm

@Test
public void testPubliserConfir()throw InterupteDException{// 创建correlationDataCorrelationData cd = new CorrelationData(UUID.randowUUID().toString());// 给Future添加ConfirmCallbackcd.getFuture().addCallback(new ListenableFutureCllback<CorelationData.Confirm>(){@Overridepublic void onFailure(Throwable ex){// Future发生异常时的处理逻辑,一般不触发log.error("handle message ack fail",ex);}@Overridepublic void onSuccess(CorrelationData.Confirm result){// Future接收到回执的处理逻辑if(result.isAck()){log.debug("发送消息成功,收到ACK");}else{log.error("发送消息失败,收到NACK,reason:{}",result.getReson());}}
});
// 发送消息
rabbitTemplate.coverAndSend("hmall.direct","red","hello",cd);
}

二 MQ的可靠性

MQ的持久化可以使用Lazy Queue
(1)通过配置类

@Bean
public Queue lazyQueue(){return QueueBuilder.durable("lazy.queue")// 队列名称.lazy()//开启lazybulid();
}

(1)基于注解

@RabbitListener(queuesToDeclare = @Queue(name="lazy.queue",durable="ture",arguments=@Argument(name="x-queue-mode",value="lazy")
))
public void listenLazyQueue(String msg){log.info("接收到 lazy.queue的消息:{}",msg);
}

三 消费者确认

  1. 消费者确认机制
    在这里插入图片描述
    可以通过配置来进行确认
spring:rabbitmq:listenner:simple:prefetch: 1acknowledgs-mode: auto #确认机制 none-关闭ack,manual-手动ack,auto-自动
  1. 消费失败处理
    重试机制
spring:rabbitmq:listenner:simple:prefetch: 1retry:enabled: true #开启超时重试机制initial-interval: 100ms #失败后的初始等待时间multipier: 1 #失败后下次的等待时长倍数, 下次等待时长=initial-interval*multipiermax-attempts: 3 #最大重试次数stateless: true #true为无状态,若业务包含事务,则使用false

失败处理策略
在这里插入图片描述
在这里插入图片描述
代码实现

@Slf4j
@Configureation
@ConditionalOnProperty(prefix="spring.rabbitmq.listenner.simple.retry",name="enable",havingValue="true")// 只有重试机制是true才生效
public class ErrorConfiguration{@Bbeanpublic DirectExchange errorExchange(){return new DirectExchange("error.direct");}@Beanpublic Queue errorQueue(){return new Queue("error.queue");}@Beanpublic Binding errorBinding(DirectExchange errorExchange,Queue errorQueue){return BindingBuilder.bind(errorQueue).to(errorExchange).with("eooro");}/*** 重试失败处理策略* RepublishMessageRecoverer:重试失败后,将消息发送到指定的队列中*/@Beanpublic MessageRecoverer messageRecoverer(RabbitTemplate rabbitTemplate){log.info("MessageRecoverer 重试失败处理策略配置");return new RepublishMessageRecoverer(rabbitTemplate,"error.direct","error");}
}

四 业务幂等性

  1. 消息唯一id
  2. 业务判断
    在这里插入图片描述
http://www.fp688.cn/news/155775.html

相关文章:

  • 做社区网站用什么程序好百度网址名称是什么
  • 如何快速搭建网站山西网站seo
  • 网站在浏览器的图标怎么做优化网络软件
  • 网站 开发 工具电子商务网站有哪些?
  • 网站建设公司-山而近期国家新闻
  • php和asp.net建立电商网站比较深圳百度推广代理商
  • 保定网站建设网站有哪些平台
  • 品牌创意网站品牌传播推广方案
  • 网站点击量 哪里查询安卓aso
  • 电商网站开发企业青岛关键词排名系统
  • 建设一个电影网站需要多少钱app开发需要哪些技术
  • 用dw软件做网站栅格系统西安seo网站管理
  • 影视传媒网站设计广告
  • 郑州网站建设公司e00南宁百度seo推广
  • 官方网站做背景墙厂家微软bing搜索引擎
  • 小程序开发工具怎么用网站关键词优化排名怎么做
  • 网站建设平台有哪些 谢谢平台建站自动app优化官网
  • 如何找到盘古做的网站电脑系统优化工具
  • 郑州做网站优化公司缅甸新闻最新消息
  • 如何建设好企业的网站维护商务软文写作300字
  • 展示型网站建设方案关键词的优化和推广
  • 网站建设月总结3322免费域名注册
  • 乌鲁木齐网架公司全能优化大师
  • 怎么做自己的网站教程关键词优化排名用哪些软件比较好
  • 做网站公司好2021年关键词有哪些
  • 百度调整导致网站排名下降百度优化公司
  • 专门做建筑设计图库的网站设计新的营销模式有哪些
  • 如何用ps做网站标识网络营销是什么
  • 门户网站什么意思举例子方象科技服务案例
  • 网站收录地址发稿媒体平台