国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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ó)家法律
天峨县| 通山县| 黄冈市| 龙井市| 宜良县| 揭东县| 康马县| 合山市| 盐山县| 蓝田县| 黎平县| 社旗县| 石门县| 汝城县| 略阳县| 泰兴市| 枣庄市| 象州县| 鄂托克前旗| 宁陕县| 甘肃省| 乐都县| 石楼县| 平江县| 清水河县| 洮南市| 谢通门县| 钟山县| 南和县| 榆中县| 崇义县| 海门市| 东兴市| 四子王旗| 邢台市| 河源市| 乌恰县| 兴海县| 新郑市| 英吉沙县| 垫江县|