消息队列原理

本文介绍了消息队列的基本概念,包括生产者、消费者和消息处理中心的角色,以及消息的存储和确认机制。讨论了消息队列的刷盘原理,如同步刷盘和异步刷盘,以及它们在不同场景下的适用性。此外,针对RabbitMQ,文章提出了防止消息丢失、确保消费和解决重复消息的策略,并探讨了消息顺序消费的挑战和解决方案。最后,阐述了消息队列的两种模式及常见应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【消息队列的定义】

消息队列是在消息的传输过程中保存消息的容器;

用于接收消息,并以文件的形式存储;

一个消息队列可以被一个或者多个消费者消费;

三个元素:

Producer:消息生产者,负责生产和发送消息到Broker;

Broker:消息处理中心,负责消息存储、确认、重试等;包含多个Queue;

Consumer:消息消费者,负责从Broker中获取消息,并进行相应处理;

【消息队列的抽象过程】

过程描述:

1、消息生产者发送消息至MQ,等待MQ返回ACK;

2、MQ收到消息,将消息保存在MQ中;(先保存在内存,为了确保高可靠性,进行消息存盘,持久化到磁盘文件)

3、MQ消息存盘成功后,响应ACK给生产者;

4、MQ将消息推送给对应的消费者,等待消费者返回ACK;

5、如果消费者在指定时间内成功返回了ACK,则MQ判定消息消费成功,删除磁盘文件中的消息,执行步骤6;如果MQ在指定时间内没有收到ACK,则MQ判定消息消费失败,会尝试重试推送消息,重复执行4/5/6三步;

6、MQ删除磁盘文件中的消息;

文件系统:

1、落盘地点:部署MQ服务器的虚拟机/物理机的文件系统;

2、刷盘方式:异步刷盘和同步刷盘;

【刷盘原理】

以RocketMQ为例,详细分解异步刷盘和同

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hfxcx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值