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

前端开发和网站建设推进门户网站建设 用好用活

前端开发和网站建设,推进门户网站建设 用好用活,中国档案网站建设现状研究,上海网站jianshe文章目录 一.消息可靠性1.生产者消息确认 MQ的一些常见问题 1.消息可靠性问题:如何确保发送的消息至少被消费一次 2.延迟消息问题:如何实现消息的延迟投递 3.高可用问题:如何避免单点的MQ故障而导致的不可用问题 4.消息堆积问题:如何解决数百万消息堆积#xff0c;无法及时… 文章目录 一.消息可靠性1.生产者消息确认 MQ的一些常见问题 1.消息可靠性问题:如何确保发送的消息至少被消费一次 2.延迟消息问题:如何实现消息的延迟投递 3.高可用问题:如何避免单点的MQ故障而导致的不可用问题 4.消息堆积问题:如何解决数百万消息堆积无法及时消费的问题 一.消息可靠性 消息从生产者发送到exchange再到queue再到消费者有哪些导致消息丢失的可能性 -发送时丢失 生产者发送的消息未送达exchange 消息到达exchange后未到达queue MQ宕机queue将消息丢失 consumer接收到消息后未消费就宕机 1.生产者消息确认 生产者确认机制 RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。消息发送到MQ以后会返回一个结果给发送者表示消息是否处理成功。结果有两种请求 publisher-confirm发送者确认 消息成功投递到交换机返回ack 消息未投递到交换机返回nack publisher-return发送者回执 消息投递到交换机了但是没有路由到队列。返回ACK及路由失败原因。 注意:确认机制发送消息时需要给每个消息设置一个全局唯一id以区分不同消息避免ack冲突 简单来说:在publisher-confirm下的nack是消息投递到交换机失败返回的信息;在publisher-confirm下的ack是消息成功到达了消费者;在publisher-return下的ack是消息到达了交换机但是路由失败的返回信息 SpringAMQP实现生产者确认 一.想要实现生产者消息确认机制,需要在配置文件编写开启代码,即在微服务的application.yml中添加配置: spring:rabbitmq:publisher-confirm-type: correlated publisher-returns: true template:mandatory: true配置说明 publish-confirm-type开启publisher-confirm这里支持两种类型 simple同步等待confirm结果直到超时 correlated异步回调定义ConfirmCallbackMQ返回结果时会回调这个ConfirmCallback(推荐使用) publish-returns开启publish-return功能同样是基于callback机制不过是定义ReturnCallback template.mandatory定义消息路由失败时的策略。true则调用ReturnCallbackfalse则直接丢弃消息 二.配置ReturnCallback ReturnCallback是消息到达交换机但是没有成功进行路由的回调函数(作用于全局) 每个RabbitTemplate只能配置一个ReturnCallback因此需要在项目启动过程中配置 Slf4j Configuration public class CommonConfig implements ApplicationContextAware {Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {// 获取RabbitTemplateRabbitTemplate rabbitTemplate applicationContext.getBean(RabbitTemplate.class);// 设置ReturnCallbackrabbitTemplate.setReturnCallback((message, replyCode, replyText, exchange, routingKey) - {log.info(消息发送失败应答码{}原因{}交换机{}路由键{},消息{}, replyCode, replyText, exchange, routingKey, message.toString());});} }对于代码中的ApplicationContext是负责管理和组织Spring应用中的各个组件如bean、配置文件等. 通过实现ApplicationContextAware这个接口bean可以获取对ApplicationContext的引用并因此获得访问应用上下文中的其他bean、资源和容器特性的能力,所以说实现了接口等同于获取到了bean容器,就可以获取到 rabbitTemplate并进行设置唯一的ReturnCallback 在回调函数中,消息路由失败会返回很多信息,其中使用路由键,消息的交换机的名称可以实现重发消息 三.在生产者类中发送消息并同时实现ConfirmCallback ConfirmCallback同样是回调函数,与ReturnCallback不同的是ConfirmCallback可以创建多次 ConfirmCallback是对消息还没有进入到交换机就丢失的一种消息返回策略,当丢失后,执行回调函数并可以记录消息的失败原因和UUID,成功也是同理 Test public void testSendMessage2SimpleQueue() throws InterruptedException {// 消息体String message hello, spring amqp!;// 消息ID需要封装到CorrelationData中CorrelationData correlationData new CorrelationData(UUID.randomUUID().toString());// 添加callbackcorrelationData.getFuture().addCallback(result - {if(result.isAck()){ // ack消息成功log.debug(消息发送成功, ID:{}, correlationData.getId());}else{// nack消息失败log.error(消息发送失败, ID:{}, 原因{},correlationData.getId(), result.getReason());}},ex - log.error(消息发送异常, ID:{}, 原因{},correlationData.getId(),ex.getMessage()));// 发送消息rabbitTemplate.convertAndSend(amq.direct, simple, message, correlationData); }总结: SpringAMQP中处理消息确认的几种情况 publisher-comfirm 消息成功发送到exchange返回ack 消息发送失败没有到达交换机返回nack 消息发送过程中出现异常没有收到回执 消息成功发送到exchange但没有路由到queue调用ReturnCallback
http://www.w-s-a.com/news/902847/

相关文章:

  • 新闻类网站备案WordPress评论昵称显示错误
  • 如何建立一个个人网站自己做一个购物网站
  • 吴忠网站建设公司中国建筑股份有限公司 官网
  • 深圳电商网站开发公司page list wordpress
  • 长安外贸网站建设顺德区网站设计建设企业
  • 临沂市建设局网站简介专业建设网站开发
  • 肇庆网站制作设计中国企业500强招聘
  • 苏州厂房装修宁波seo网络推广外包报价
  • 文山知名网站建设惠州哪家做网站好
  • 物流网站风格网站登录密码保存在哪里设置
  • 免费网站怎么建立icodepython基础教程
  • 无障碍网站建设方案wordpress 任务管理系统
  • iis5.1发布网站中小企业网络营销存在的问题研究论文
  • 阳泉软件定制网站建设网站可以做多语言的吗
  • 建设网站的目的及功能定位主要包括哪些内容百度关键词优化
  • 开一个小程序要多少钱宁波seo网络推广外包报价
  • 网站备案最新备案号电子商务网站建设的规章制度
  • wordpress制作单页网站导航页面鞍山信息港招聘信息
  • 屏蔽ip地址访问网站自己做衣服的网站
  • 网站建设 域名业务 邮箱哪里有网站建设中心
  • 免费网站赚钱重庆建设摩托车股份有限公司
  • 合肥水运建设工程监理网站自己买服务器能在wordpress建网站
  • wordpress积分商城主题整站seo排名要多少钱
  • 鲜花网站建设的利息分析网站设计与制作专业
  • 深圳网站建设排名做网站的公司高创
  • 杭州哪家做外贸网站全国物流网站有哪些平台
  • 企业网站建设个人博客鞍山晟宇网站建设
  • 广东省自然资源厅网站h5移动端网站模板下载
  • 网站建设和安全管理制度云南九泰建设工程有限公司官方网站
  • 网站的关键词和描述做外贸家纺资料网站