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)

相关推荐

  • 记一次关于pdf 下载需求变更到 pdf 在线预览

    技术记一次关于pdf 下载需求变更到 pdf 在线预览 记一次关于pdf 下载需求变更到 pdf 在线预览背景:之前的需求是根据接口中提供的Blob数据实现PDF下载,已实现代码如下:1     

    礼包 2021年10月27日
  • 南辕北辙原文及翻译,《南辕北辙》的古文意思和寓意

    技术南辕北辙原文及翻译,《南辕北辙》的古文意思和寓意1南辕北辙原文及翻译、《南辕北辙》的古文意思如下:
    我今天来上朝的时候,在大路上遇见了一个人,正在面朝北面驾着他的车,他告诉我说:‘我想到楚国去。’我说:‘您到楚国去,

    生活 2021年10月23日
  • 彻底解决mysql中的乱码问题(怎么解决mysql不能识别中文的问题)

    技术如何解决mac中mysql乱码问题这篇文章主要为大家展示了“如何解决mac中mysql乱码问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决mac中mysql乱码

    攻略 2021年12月25日
  • 树莓派的安装过程是怎样的

    技术树莓派的安装过程是怎样的今天就跟大家聊聊有关树莓派的安装过程是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先烧录SD卡我的是Debian系统,使用d

    攻略 2021年11月19日
  • 如何配置Log日志

    技术如何配置Log日志这篇文章主要讲解了“如何配置Log日志”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何配置Log日志”吧!1.Slf4jSlf4j 的全称是 Si

    攻略 2021年10月20日
  • 如何登录服务器管理界面(服务器登录失败无法加载用户配置)

    技术高效简单的服务器登录配置方法是什么这篇文章主要介绍“高效简单的服务器登录配置方法是什么”,在日常操作中,相信很多人在高效简单的服务器登录配置方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望

    攻略 2021年12月21日