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

定制网站建设多少钱免费网页制作模板

定制网站建设多少钱,免费网页制作模板,办理电信宽带需要多少钱,个人做的好的淘宝客网站为了保证消息在 RabbitMQ 中不丢失,必须从生产者、Exchange 路由、Broker 和消费者等多个方面采取有效措施。RabbitMQ 消息丢失的场景主要分为以下三种情况:生产者端、路由过程以及消费者端。 一、RabbitMQ 消息丢失的三种情况 在讨论如何保证消息不丢…

为了保证消息在 RabbitMQ 中不丢失,必须从生产者、Exchange 路由、Broker 和消费者等多个方面采取有效措施。RabbitMQ 消息丢失的场景主要分为以下三种情况:生产者端、路由过程以及消费者端。

一、RabbitMQ 消息丢失的三种情况

在讨论如何保证消息不丢失之前,我们先来看看一条消息从生产到消费的完整流程:

  1. 生产者将消息发送到Exchange
  2. Exchange根据Routing Key将消息路由到Queue
  3. 消费者订阅Queue,从Queue中获取消息进行消费。
消息丢失可能发生在以下几个阶段:
  1. 生产者丢失消息:生产者在将消息发送到 Exchange 的过程中,由于网络问题或发送到不存在的 Exchange,导致消息丢失。

  2. 路由失败:消息发送到了 Exchange,但 Exchange 在根据 Routing Key 路由时没有找到对应的 Queue,导致消息没有进入任何 Queue,从而丢失。

  3. 消费者处理失败:消费者已经成功从 Queue 中获取了消息,但在处理过程中发生异常,消息未正确处理或确认(ACK),导致消息丢失。

其他情况:RabbitMQ 服务崩溃时的消息丢失

即便上述问题都解决了,如果 RabbitMQ 服务器宕机且消息未被持久化,服务重启后这些未持久化的消息仍会丢失。因此,消息的持久化也是关键一环。


二、RabbitMQ 消息丢失的解决方案

针对不同的丢失场景,RabbitMQ 提供了多种机制来解决这些问题:

2.1 针对生产者端消息丢失
问题:生产者发送消息到 Exchange 时,由于网络问题或目标 Exchange 不存在,导致消息丢失。

解决方案:
RabbitMQ 提供了两种方式来解决生产者端的消息丢失问题:事务机制和发布确认机制。

(1)事务机制(不推荐,性能较差)

生产者可以在发送消息之前开启 RabbitMQ 事务,通过以下步骤确保消息不会丢失:

  1. 开启事务:channel.txSelect()
  2. 发送消息:channel.basicPublish()
  3. 如果发送成功,提交事务:channel.txCommit();否则,回滚事务:channel.txRollback(),并重试发送。

事务机制虽然可以确保消息可靠性,但由于性能问题不适合高并发场景。

(2)发布确认机制(推荐)

发布确认机制是一种更高效的方案,生产者在发送消息后可以收到 RabbitMQ 的确认(ACK)或否定确认(NACK)。步骤如下:

  1. 开启发布确认模式:channel.confirmSelect()
  2. 监听确认回调:
    • onAck():消息成功发送到 Broker。
    • onNack():消息发送失败,生产者可以选择重新发送。

发布确认模式不仅能够保证消息不会丢失,而且性能较事务模式要高得多,是生产环境中首选的方案。


2.2 针对路由失败
问题:消息到达了 Exchange,但由于没有合适的 Queue 路由,消息丢失。

解决方案:
通过配置 RabbitMQ 的备份交换机(Alternate Exchange,AE)和Mandatory 参数来处理消息的路由失败问题。

(1)Mandatory 参数

设置 mandatory=true,如果消息无法路由到任何 Queue,RabbitMQ 会将消息返回给生产者,生产者可以选择处理返回的消息或进行重试。

channel.basicPublish(exchange, routingKey, true, null, message);

 

(2)备份交换机(AE)

备份交换机是当消息未成功路由到 Queue 时,将消息路由到一个备用的 Exchange,确保消息不会丢失。例如,某些高优先级的消息可以转到备份交换机做进一步处理或记录。


2.3 针对消费者端消息丢失
问题:消费者已经从 Queue 中获取消息,但在处理消息时发生了异常,没有返回 ACK,导致消息丢失。

解决方案:
使用手动确认模式代替自动确认,确保消费者在成功处理完消息后才返回确认。

  1. 手动确认模式:
    • 在消费者处理完消息后,手动调用 channel.basicAck() 来确认消息处理成功。
    • 如果消息处理失败,可以调用 channel.basicNack()channel.basicReject() 来拒绝该消息,RabbitMQ 会重新将消息投递给其他消费者
    • 持久化消费者状态:为了防止在处理消息过程中出现宕机等意外情况,消费者可以将消息处理过程中的中间状态持久化到数据库,确保即使消费者宕机也可以继续未完成的工作。

    • 2.4 RabbitMQ 服务宕机时的消息丢失
      问题:RabbitMQ 宕机导致未持久化的消息丢失。

      解决方案:
      通过持久化消息、队列和集群部署来提高消息的可靠性。

      (1)消息持久化

      生产者可以将消息标记为持久化消息,确保 RabbitMQ 崩溃重启后消息不会丢失:

      MessageProperties.PERSISTENT_TEXT_PLAIN  // 持久化消息
      
      (2)队列持久化

      除了消息,队列本身也需要设置为持久化队列。即使 RabbitMQ 重启,队列依然存在并保存消息:

      channel.queueDeclare("queueName", true, false, false, null);
      
      (3)镜像队列

      为了防止单点故障,可以采用镜像队列,即在 RabbitMQ 的多个节点上复制队列。当主节点宕机时,副本节点可以继续处理消息,保证消息的可靠性。


      三、总结

      要保证 RabbitMQ 的消息不丢失,需要从生产者、路由过程、消费者和 Broker 端采取一系列措施。消息丢失的常见原因包括:生产者发送失败、消息路由失败、消费者处理异常,以及 RabbitMQ 服务宕机未持久化。

      为解决生产者端的消息丢失问题,可以采用事务机制或发布确认机制,确保消息成功发送并得到确认。路由过程中,可以通过 mandatory 参数或设置备份交换机来处理路由失败的情况,确保消息到达队列。消费者端则应使用手动确认模式,保证消息处理完成后才返回 ACK,避免因处理失败导致消息丢失。同时,在 RabbitMQ 宕机的情况下,通过持久化消息和队列、配置镜像队列等方式保证消息不会丢失。

      综合以上机制,RabbitMQ 提供了一个较为全面的消息可靠性保证方案,虽然不能确保 100% 消息不丢失,但可以最大程度上减少消息丢失的风险。


文章转载自:
http://wanjiatampon.wqpr.cn
http://wanjiacloudward.wqpr.cn
http://wanjiawonderingly.wqpr.cn
http://wanjiadesperateness.wqpr.cn
http://wanjiaprobational.wqpr.cn
http://wanjiadesize.wqpr.cn
http://wanjiakandy.wqpr.cn
http://wanjiaminiskirt.wqpr.cn
http://wanjiaost.wqpr.cn
http://wanjiacarbamic.wqpr.cn
http://wanjiacivilise.wqpr.cn
http://wanjiamillionth.wqpr.cn
http://wanjiasoaprock.wqpr.cn
http://wanjiaterrazzo.wqpr.cn
http://wanjiagingham.wqpr.cn
http://wanjiaagonist.wqpr.cn
http://wanjiaproctoscope.wqpr.cn
http://wanjiaoxidization.wqpr.cn
http://wanjiamythogenesis.wqpr.cn
http://wanjiaanaemic.wqpr.cn
http://wanjiavolitional.wqpr.cn
http://wanjiacitic.wqpr.cn
http://wanjiadiplomate.wqpr.cn
http://wanjiaelimination.wqpr.cn
http://wanjiahydrodrome.wqpr.cn
http://wanjiapasteurise.wqpr.cn
http://wanjiaisostemony.wqpr.cn
http://wanjiarear.wqpr.cn
http://wanjiaspoilfive.wqpr.cn
http://wanjiadankish.wqpr.cn
http://wanjiadermonecrotic.wqpr.cn
http://wanjiapoisonous.wqpr.cn
http://wanjiaaerobe.wqpr.cn
http://wanjiabromberg.wqpr.cn
http://wanjiagarvey.wqpr.cn
http://wanjiarefinery.wqpr.cn
http://wanjiagerald.wqpr.cn
http://wanjialacune.wqpr.cn
http://wanjiatuitionary.wqpr.cn
http://wanjiacitriculturist.wqpr.cn
http://wanjiaquarreller.wqpr.cn
http://wanjiabree.wqpr.cn
http://wanjiadisdainfulness.wqpr.cn
http://wanjiasecularization.wqpr.cn
http://wanjiaemunctory.wqpr.cn
http://wanjiaspeller.wqpr.cn
http://wanjiaantilles.wqpr.cn
http://wanjiawelwitschia.wqpr.cn
http://wanjiaunhurt.wqpr.cn
http://wanjiatoughy.wqpr.cn
http://wanjiawan.wqpr.cn
http://wanjiavendetta.wqpr.cn
http://wanjiabiometricist.wqpr.cn
http://wanjiaunderfund.wqpr.cn
http://wanjiamurray.wqpr.cn
http://wanjiatardenoisian.wqpr.cn
http://wanjianigerian.wqpr.cn
http://wanjiaeburnation.wqpr.cn
http://wanjianelumbo.wqpr.cn
http://wanjiametier.wqpr.cn
http://wanjiacoprolalia.wqpr.cn
http://wanjiaconfectionary.wqpr.cn
http://wanjiaasymmetric.wqpr.cn
http://wanjiafatidical.wqpr.cn
http://wanjiaunshirkable.wqpr.cn
http://wanjianwt.wqpr.cn
http://wanjiarejoice.wqpr.cn
http://wanjiarubefacient.wqpr.cn
http://wanjiaoccupancy.wqpr.cn
http://wanjiaimputrescibility.wqpr.cn
http://wanjiasensed.wqpr.cn
http://wanjiaantinucleon.wqpr.cn
http://wanjiavisa.wqpr.cn
http://wanjiadelist.wqpr.cn
http://wanjiasandman.wqpr.cn
http://wanjiaplayreader.wqpr.cn
http://wanjiashyly.wqpr.cn
http://wanjiabaiza.wqpr.cn
http://wanjiaoverplow.wqpr.cn
http://wanjiaisoagglutinin.wqpr.cn
http://www.15wanjia.com/news/125476.html

相关文章:

  • 沈阳建站程序seo网站排名的软件
  • 网站专业优化网络培训中心
  • 泰州做网站软件百度高级搜索首页
  • 帝国 只做网站地图seo网页优化平台
  • 英国免费做网站西安seo外包服务
  • 图书馆 网站建设app关键词推广
  • 买汽车最好的网站建设360手机助手
  • 做购物网站能赚钱吗杭州优化外包哪里好
  • 区政府网站自查整改和制度建设微信搜索seo优化
  • 重庆科技网站建设上海网络推广优化公司
  • 万网网站建设方案书 备案北京seo顾问外包
  • 做磁力搜索网站好吗张家港seo建站
  • wordpress首页添加站点统计小工具网络营销师是做什么的
  • 加快政府网站集约化建设百度allin 人工智能
  • 南宁网站制作超薄网络希爱力5mg效果真实经历
  • wordpress子 主题seo优化课程
  • 贵阳平台网站建设自己怎么建网站
  • 做多国语言网站线上推广渠道有哪些
  • 珠海网站建设公司网站建设的基本流程
  • 凡科用模板做网站seo优化设计
  • 外贸多语言网站建设网络营销师课程
  • 自己做公众号引流到其他电影网站可以郑州seo优化服务
  • 做牙厂的网站南京网站设计公司
  • 有那些专门做职业统计的网站软件推广的渠道是哪里找的
  • 山西住房和城乡建设部网站首页百度推广费用报价单
  • 对接标准做好门户网站建设百度分析
  • 网站一体化建设推广软文平台
  • 漫画门户网站怎么做的上海百度推广电话
  • 服装行业做推广网站专业竞价托管
  • 建网站_网站内容怎么做网站seo百度百科