本篇文章1204字,讀完約3分鐘

阿里云國際站經(jīng)銷商,主營阿里云,騰訊云,華為云,亞馬遜aws,谷歌云gcp,微軟云az,免費(fèi)開戶,代充值優(yōu)惠大,聯(lián)系客服飛機(jī)@jkkddd


事務(wù)消息

本文介紹如何使用消息服務(wù)MNS的延時(shí)消息功能,實(shí)現(xiàn)本地操作和消息發(fā)送的事務(wù)一致性。
前提條件
您已創(chuàng)建以下隊(duì)列,具體操作,請(qǐng)參見創(chuàng)建隊(duì)列。
事務(wù)消息隊(duì)列
消息存活時(shí)間小于消息延時(shí)時(shí)間。
當(dāng)消息發(fā)送成功、事務(wù)操作成功時(shí),生產(chǎn)者修改消息延遲時(shí)間,消息對(duì)消費(fèi)者可見。
當(dāng)消息發(fā)送成功、事務(wù)操作失敗時(shí),生產(chǎn)者不修改消息延遲時(shí)間,消息對(duì)消費(fèi)者不可見。
操作日志隊(duì)列
記錄事務(wù)消息的操作記錄信息。消息延時(shí)時(shí)間為事務(wù)消息操作超時(shí)時(shí)間。日志隊(duì)列中的消息確認(rèn)后將對(duì)消費(fèi)者不可見。
原理介紹
一些業(yè)務(wù)場景需要保證本地操作和消息發(fā)送的事務(wù)一致性,即消息發(fā)送成功,本地操作成功。如果消息發(fā)送成功,本地操作失敗,那么發(fā)送成功的消息需要回滾。
消息發(fā)送成功,事務(wù)操作成功時(shí)操作步驟如下所示:
生產(chǎn)者發(fā)送一條事務(wù)準(zhǔn)備消息到事務(wù)消息隊(duì)列。
生產(chǎn)者發(fā)送操作日志消息到操作日志隊(duì)列,日志中包含步驟1消息的消息句柄。
生產(chǎn)者執(zhí)行本地事務(wù)操作成功。
生產(chǎn)者請(qǐng)求修改消息延遲時(shí)間,使消息對(duì)消費(fèi)者可見。
生產(chǎn)者向操作日志隊(duì)列確認(rèn)操作日志,刪除日志消息。
消費(fèi)者從事務(wù)消息隊(duì)列中接收事務(wù)消息。
消費(fèi)者處理事務(wù)消息。
消費(fèi)者請(qǐng)求刪除事務(wù)消息。
消息發(fā)送成功,事務(wù)操作失敗時(shí)操作步驟如下所示:
生產(chǎn)者發(fā)送一條事務(wù)準(zhǔn)備消息到事務(wù)消息隊(duì)列。
生產(chǎn)者發(fā)送操作日志信息到操作日志隊(duì)列,日志中包含步驟1消息的消息句柄。
生產(chǎn)者執(zhí)行本地事務(wù)操作失敗。
操作日志隊(duì)列向生產(chǎn)者發(fā)送消息,請(qǐng)求讀取超時(shí)未確認(rèn)操作日志。
生產(chǎn)者檢查事務(wù)結(jié)果,發(fā)現(xiàn)操作失敗。
生產(chǎn)者提交回滾消息請(qǐng)求,不修改消息延遲時(shí)間,消息對(duì)消費(fèi)者不可見。
生產(chǎn)者向操作日志隊(duì)列確認(rèn)操作日志,刪除日志消息。
示例代碼
消息服務(wù)MNS最新的Java SDK(1.1.8)中的TransactionQueue支持上述事務(wù)消息方案。在TransactionOperations和TransactionChecker兩個(gè)接口添加業(yè)務(wù)操作和檢查邏輯,您就可以方便地實(shí)現(xiàn)事務(wù)消息
異常分析
生產(chǎn)者異常(例如進(jìn)程重啟)
讀取操作日志隊(duì)列中超時(shí)未確認(rèn)日志。
檢查事務(wù)結(jié)果。
如果檢查到事務(wù)執(zhí)行成功,則提交消息。
確認(rèn)操作日志。
消費(fèi)者異常(例如進(jìn)程重啟)
消息服務(wù)MNS提供至少保證消費(fèi)一次的特性,如果當(dāng)前消費(fèi)者沒有成功消費(fèi)并刪除消息,消息在不可見時(shí)間后將繼續(xù)可見,被當(dāng)前消費(fèi)者或者其他消費(fèi)者處理。
消息服務(wù)MNS服務(wù)不可達(dá)(例如斷網(wǎng))
消息發(fā)送和接收處理狀態(tài)及操作日志都在消息服務(wù)MNS服務(wù)端,消息服務(wù)MNS本身具備高可靠和高可用的特點(diǎn),所以只要網(wǎng)絡(luò)恢復(fù)正常,事務(wù)就可以繼續(xù)進(jìn)行。只要生產(chǎn)者操作成功,消費(fèi)者就能收到消息并成功處理;如果生產(chǎn)者操作失敗,則消費(fèi)者無法收到消息。

標(biāo)題:阿里云國際代理商,阿里云賬號(hào)24h自助充值

地址:http://0bc8wa.cn/kfxw/64311.html