五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ó)家法律
蒙城县| 固镇县| 阳东县| 南岸区| 通榆县| 东乡族自治县| 班玛县| 郎溪县| 海兴县| 南京市| 泗洪县| 宝应县| 搜索| 南平市| 兴国县| 冷水江市| 海淀区| 龙井市| 西盟| 海林市| 渭南市| 乐至县| 沾益县| 弥渡县| 沙坪坝区| 武穴市| 玛沁县| 苏尼特右旗| 将乐县| 西峡县| 屏边| 文安县| 沙雅县| 西宁市| 三亚市| 突泉县| 广昌县| 禹州市| 呼伦贝尔市| 永顺县| 宁津县|