消息发送到消息接收的整体流程
生活随笔
收集整理的這篇文章主要介紹了
消息发送到消息接收的整体流程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. Producer將消息發送到Broker后,Broker會采用同步或者異步的方式把消息寫入到CommitLog。RocketMQ所有的消息都會存放在CommitLog中,為了保證消息存儲不發生混亂,對CommitLog?寫之前會加鎖,同時也可以使得消息能夠被順序寫入到CommitLog,只要消息被持久化到磁盤文件CommitLog,那么就可以保證Producer發送的消息不會丟失。
2. commitLog持久化后,會把里面的消息Dispatch到對應的Consume Queue上,Consume Queue?相當于kafka中的partition,是一個邏輯隊列,存儲了這個Queue在CommiLog中的起始offset,log大小和MessageTag的hashCode。
3. 當消費者進行消息消費時,會先讀取consumerQueue , 邏輯消費隊列ConsumeQueue保存了指定Topic下的隊列消息在CommitLog中的起始物理偏移量Offset,消息大小、和消息Tag的HashCode值
4. 直接從consumequeue中讀取消息是沒有數據的,真正的消息主體在commitlog中,所以還需要從commitlog中讀取消息?
?
總結
以上是生活随笔為你收集整理的消息发送到消息接收的整体流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RocketMQ消息存储的整体结构
- 下一篇: 什么时候清理物理消息文件?