最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
巧家县| 卢湾区| 巴林左旗| 长岭县| 唐海县| 苍溪县| 康平县| 盱眙县| 宁安市| 望奎县| 平泉县| 蚌埠市| 武安市| 虎林市| 陕西省| 宁武县| 凤庆县| 湘潭市| 东阳市| 南阳市| 宣威市| 垣曲县| 道孚县| 泸溪县| 渭源县| 汉川市| 三明市| 南城县| 榆树市| 克山县| 邻水| 定结县| 沂源县| 大宁县| 乐安县| 常熟市| 桐城市| 炎陵县| 镇沅| 永福县| 巨野县|