无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

RocketMQ使用淺析(二)

2023-06-23 23:16 作者:懶人Java屈原  | 我要投稿

上篇文章介紹了RocketMQ的構(gòu)成與消息發(fā)送方式,接下來我們繼續(xù)RocketMQ的消費(fèi)模式、事務(wù)消息與持久化。上一篇文章請(qǐng)看:RocketMQ使用淺析(一)

RocketMQ消費(fèi)方式

1.推模式

RocketMQ服務(wù)器主動(dòng)給客戶端推送消息,當(dāng)客戶端連接到服務(wù)器時(shí),服務(wù)器會(huì)hold這個(gè)連接一段時(shí)間,這個(gè)時(shí)間如果有新消息到達(dá),會(huì)通過hold的這個(gè)連接通道直接返回給客戶端,消息推送非常及時(shí),但是對(duì)于服務(wù)端的壓力比較大

2.拉模式

客戶端通過長(zhǎng)輪詢主動(dòng)去拉服務(wù)端的消息,可以自主控制消息的消費(fèi)時(shí)間,RocketMQ服務(wù)端的壓力會(huì)減輕

拉模式采用的DefaultMQPullConsumer來實(shí)現(xiàn)。

RocketMQ事務(wù)消息

RocketMQ的事務(wù)消息解決了,消息已發(fā)送出去,但是本地事務(wù)異?;貪L,無法進(jìn)行消息撤回的問題。

事務(wù)消息分為以下步驟

1.生產(chǎn)者向Broker發(fā)送半消息

2.所有半消息存儲(chǔ)在固定Topic:RMQ_SYS_TRANS_HALF_TOPIC中,對(duì)于消費(fèi)者不可見

3.服務(wù)端將消息持久化,并向生產(chǎn)者返回ACK確認(rèn)發(fā)送成功

4.生產(chǎn)者執(zhí)行本地事務(wù),根據(jù)事務(wù)結(jié)果向服務(wù)器進(jìn)行二次確認(rèn)(commit或者rollback)

5.如果服務(wù)端收到為提交,就將半消息拷貝到原始隊(duì)列中,等待消費(fèi)者消費(fèi)

6.如果服務(wù)端遲遲收不到二次確認(rèn),會(huì)返查生產(chǎn)者,查看消息的狀態(tài)

消息如何持久化

1.當(dāng)個(gè)Broker實(shí)例下,當(dāng)生產(chǎn)者發(fā)送的消息內(nèi)容,全部會(huì)寫到一個(gè)日志數(shù)據(jù)文件來存儲(chǔ)(commitlog)

2.當(dāng)消息到達(dá) commitlog 后,會(huì)采用異步轉(zhuǎn)發(fā)到消息隊(duì)列,也就是 consumerqueue,該文件夾下有三級(jí)目錄:
第一級(jí)目錄:topic命名的文件夾

第二級(jí)目錄:MessageQueue 隊(duì)列ID命名的文件夾

第三級(jí)目錄: 具體的consumerQueue文件(該文件記錄了,commitLog文件的位移offset,根據(jù)位移就能從commitLog找到具體的消息)

這樣分層之后, RocketMQ 至少可以得到以下幾個(gè)訊息:

  • 2.1 先通過topic名稱,可以定位到具體的文件夾;

  • 2.2 然后根據(jù)消息隊(duì)列ID找到具體的文件;

  • 2.3 最后根據(jù)文件內(nèi)容,或得位移offset,然后根據(jù)定位commitLog消息內(nèi)容。


RocketMQ使用淺析(二)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
河间市| 鹤岗市| 九寨沟县| 朝阳区| 板桥市| 清涧县| 绵阳市| 福鼎市| 外汇| 潼南县| 淄博市| 临猗县| 西平县| 紫金县| 浙江省| 莱西市| 尚义县| 奈曼旗| 怀安县| 镇康县| 剑河县| 庆城县| 阿克苏市| 平乐县| 丹寨县| 阜新| 封丘县| 齐河县| 余江县| 烟台市| 四会市| 柘荣县| 彰武县| 科技| 芒康县| 吴江市| 平塘县| 玛曲县| 当雄县| 怀宁县| 黎平县|