专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

RabbitMQ如何通过持久化保证消息9999_数据库

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 13:42:19       共计:3676 浏览

RabbitMQ如何通过持久化保证消息9999?

当下主流的消息系统有RabbitMQ、RocketMQ、ActiveMQ等,而RabbitMQ是基于Erlang开发,无论是并发、延时表现都很好。

RabbitMQ消息可靠性是靠什么实现的?

消息可靠性是RabbitMQ的一大特点,RabbitMQ靠什么实现消息可靠性的呢?其实就是通过消息持久化来实现的,这样就避免了服务异常(重启、宕机)下消息和队列丢失的风险。

消息持久化是指RabbitMQ将内存中的数据(交换器Exchange、队列Queue、消息Message)落地到硬盘中存储,以防止异常情况导致内存中的数据丢失。

RabbitMQ如何实现消息持久化?

RabbitMQ中不同数据持久化方式是不同的,主要有:

1、交换器(Exchange)的持久化

交换器Exchange若丢失会影响后续消息的写入,我们在创建Exchange时需要指定durable为true表示持久化。

2、队列(Queue)的持久化

在上面第一步操作中,在创建交换器时即使设置了durable为true后,Exchange不会丢失,但是里面的队列依旧会丢失。如何保证队列持久化呢?同样是在创建队列时指定durable为true即可。

3、消息(Message)的持久化

上面两步操作后,在重启RabbitMQ后,虽然Exchange和Queue不会丢失,但是Queue里的消息是会丢失的,那如何保证消息持久化不丢失呢?我们设置消息投递模式(deliveryMode)为2即代表消息持久化。

消息持久化并不能100%保证数据不丢失

当我们将交换器/队列/消息都设置了持久化依旧不能100%保证数据不会丢失。这其实很好理解,内存中的数据写入硬盘是要时间的,突然断电、宕机重启等情况时消息可能没来得及落地,那么这些消息就有丢失的可能。

消息持久化会带来性能问题

我们知道消息持久化是将内存中的数据写入硬盘中,但硬盘的读写速度远不如内存,所以开启消息持久化后会影响RabbitMQ的性能。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:行业研究报告在哪里找_数据库 | ·下一条:mysql 查询序列,mysql主从复制是什么概念_数据库

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有