rabbitmq如何确保消息不丢失 chengtian

技术rabbitmq如何确保消息不丢失 chengtian rabbitmq如何确保消息不丢失 chengtian上篇写了掌握Rabbitmq几个重要概念,从一条消息说起,这篇来总结关于消息丢失让人头痛

rabbitmq如何确保消息不会丢失

在最后一部分,我写了几个关于掌握拉比质量的重要概念。本文从一条消息开始,总结了关于消息丢失的头痛问题。网络故障、服务器重启、硬盘损坏等。都会导致信息丢失。新闻从生产到消费的主要结果如下。

(1)在制作阶段,制作方创建一条消息,通过网络发送到兔子服务器。

(2)在消息存储阶段,消息首先发送到交换机,然后通过路由算法传递,到达队列,等待被拉取和消耗。

(3)消费阶段,消费者通过网络从兔子服务器拉消息进行消费。

消息丢失在所有三个阶段都是可能的,这将在下面逐一分析。

消息存储阶段

在正常情况下,我们使用BasicPublish方法将消息发送到交换机,然后将其路由到队列。在消费者消费之前,服务器重新启动(默认情况下创建队列和交换机)。会发生的是信息丢失。原因很简单:消息在内存中,默认不持久。服务重启后,需要重新创建,消息自然会丢失!

幸运的是,兔子提供了一种坚持的机制。创建队列和开关时,持久属性设置为true,消息传递模式设置为2,因此消息被标记为持久。这样可以避免丢失服务器重启消息。

发送阶段

由于发布操作不会向生产者返回任何信息,您如何知道服务器是否已将持久消息保存到硬盘上?在将消息写入磁盘之前,服务器可能已关闭,消息将会丢失!

是的。)

Rabbit提供了两种解决方案,事务,但是性能将大大降低,生产者应用程序将同步。一般不采用生产环境;另一种解决方案是确认模式。也很简单。消息被路由到所有匹配的订阅队列,然后它将被异步告知生产者。使用频道。确认选择()方法将频道打开确认模式。然后注入两个回调函数,ack和nack事件。

频道。BasicAcks=(发送方,ev)=

{

控制台。WriteLine('消息已确认收到' ev。delivery tag);

};

频道。基本确认=(发送方,ev)=

{

控制台。WriteLine('消息未确认' ev。delivery tag);

};

消费阶段

你可能会问,消费者端的信息怎么会丢失?Rabbitmq提供自动和手动确认消息,然后将消息从队列中删除。如果自动检查为真,该模式将被自动确认,并且服务器将在消息发送给消费者后自动取消消息队列。如果连接由于某种原因中断,或者您的消费应用程序失败,那么消息将会丢失!

通过将自动检查设置为假,手动确认并通知服务器消息已被处理,可以出列和删除。

频道。基本消费(queue: queueName,

自动检查:为假,

消费者:消费者);

消费者。接收=(型号,ea)=

{

//剂量计量

频道。BasicAck(ea。DeliveryTag,false);//确认

};

总结:如果你做了以上处理,那么消息就不会瞒着你了。这里有一个性能问题,消息持久性,就是刷到磁盘会影响传递速度,消息确认也会影响传递速度。基本满足不了需求。如果不能满足性能要求,可以使用其他方法,比如每次

作者:阿本

【官方QQ群:跟本玩NET(全)】:422315558

【官方QQ群二:和阿本玩C#(全):574187616

【官方QQ三组:和本一起玩ASP.NET(全)】:967920586

【官方QQ四组:Asp.Net芯跨平台技术开发(可选)】:806491485

【官方QQ五组:NET Core跨平台开发技术(可选)]: 1036896405

【网易云课堂】:https://学习。163 .com/provider/2544628/index。htm共享=2 shareid=2544628

【腾讯课堂】:https://abennet.ke.qq.com

【51CTO学院】:https://edu.51cto.com/sd/66c64

【微信公众号】:http://dwz.cn/ABenNET

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/154014.html

(0)

相关推荐

  • 力扣

    技术力扣 力扣 - 剑指 Offer 24. 反转链表题目
    剑指 Offer 24. 反转链表
    思路1(迭代)使用一个指针pre指向上一个节点,初始值为null,然后遍历链表,一边遍历一遍交换指针指向:

    礼包 2021年11月19日
  • 抖音买赞自助下单平台,抖音免费点赞网站在线?

    技术抖音买赞自助下单平台,抖音免费点赞网站在线?根据抖音的热门原则,这绝对是有帮助的:在你发布了一段时间之后,将根据你的作品的播放量,点赞量,评论数量来判断你是否符合热门标准。因此,上热播放量是非常重要的。但也不是说只刷

    测评 2021年11月9日
  • puppet中nagios客户端模块的示例分析

    技术puppet中nagios客户端模块的示例分析这篇文章主要为大家展示了“puppet中nagios客户端模块的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“pup

    攻略 2021年10月21日
  • 2019年上映的电影,最近一两年有哪些好看的电影

    技术2019年上映的电影,最近一两年有哪些好看的电影《美人皮》是由韩栋、张予曦、王艺曈、李若天、肖向飞、陶慧敏主演的悬疑奇幻电影,由蒲松龄原著《聊斋志异.连城》改编2019年上映的电影。谁应了谁的劫谁又变成了谁的执念。一

    生活 2021年10月29日
  • 基于Instrumentation Framework的开源项目AndroidMonkey是怎样的

    技术基于Instrumentation Framework的开源项目AndroidMonkey是怎样的基于Instrumentation Framework的开源项目AndroidMonkey是怎样的,很多新手对此不是很

    攻略 2021年11月23日
  • Hibernate应用开发遇到的问题有哪些

    技术Hibernate应用开发遇到的问题有哪些这篇文章主要讲解了“Hibernate应用开发遇到的问题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Hibernat

    攻略 2021年12月4日