目前主流的消息系统有rabbitmq、rocketmq、activemq等。rabbitmq是基于erlang开发的,具有良好的并发和延迟性能。
rabbitmq消息的可靠性达到了什么程度?消息可靠性是rabbitmq的一个主要特性。rabbitmq是如何实现消息可靠性的?实际上是通过消息持久化来实现的,避免了异常服务(重启、宕机)下的消息和队列色谱柱损失的风险。
消息持久化是指rabbitmq将内存(交换、队列、消息)中的数据存储在硬盘上,防止内存中的数据因异常情况而丢失。
rabbitmq是如何实现消息持久化的?rabbitmq中不同的数据持久化方法是不同的,主要包括:
1.交流的持久性。
交换丢失会影响后续消息的写入。在创建exchange时,我们需要将durable指定为true来表示持久性。
2.队列的持久性
在上面的第一步中,即使在创建交换机时将durable设置为true,exchange也不会丢失,但是其中的队列仍然会丢失。如何保证队列的持久性?创建队列时,还可以将durable指定为true。
3.消息的持久性
经过以上两步,重启rabbitmq后,虽然exchange和queue不会丢失,但是queue中的消息会丢失,那么如何保证消息持久性不会丢失呢?我们将deliverymode设置为2。也就是说,它表示消息持久性。
消息持久性可以t保证100%的数据不会。;不要迷路。当我们设置开关/队列/消息持久性时,我们仍然可以t保证100%的数据不会。;不要迷路。这其实很好理解。将内存中的数据写入硬盘需要时间,突然停电、停机、重启时消息可能不会出现。和着陆,那么这些消息可能会丢失。
消息持久性会带来性能问题。我们知道消息持久化是将内存中的数据写到硬盘上,但是硬盘的读写速度远不及内存,所以开启消息持久化会影响rabbitmq的性能。
那个这是我的看法。你怎么看待这个问题?欢迎在下方评论区交流~我是科技领域的创作者,有十年互联网行业经验。欢迎关注我了解更多科技知识!
阿里云是商业专业消息中间件,是企业级互联网架构的核心产品。它基于高可用的分布式集群技术提供一系列消息云服务,如消息发布和订阅、轨迹查询、资源统计、定时(延时)、监控和报警等。
消息消息,消息队列中信息传递的载体。消息id消息的全局唯一标识符,由mq系统自动生成,唯一地标识一个消息。
消息密钥消息的业务标识符由消息生产者设置,并且唯一地标识业务逻辑。
主题消息主题,一级消息类型,消息按主题分类。标签消息标签是一种次要的消息类型,用于进一步区分某个主题下的消息分类。生产者消息生产者,也称为消息发布者,负责制作和发送消息。