MQ消息隊(duì)列冪等性和順序性-創(chuàng)新互聯(lián)

如何保證消息隊(duì)列的冪等性

一個數(shù)據(jù)或者一個請求,重復(fù)操作多次,得確保對應(yīng)的數(shù)據(jù)是不會改變的。一條數(shù)據(jù)重復(fù)出現(xiàn)兩次,數(shù)據(jù)庫里就只有一條數(shù)據(jù),這就保證了系統(tǒng)的冪等性。

創(chuàng)新互聯(lián)公司長期為成百上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為邢臺縣企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站邢臺縣網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

如何保證消息消費(fèi)的冪等性

向數(shù)據(jù)庫寫庫,先根據(jù)主鍵查一下,如果這數(shù)據(jù)已經(jīng)有了,就別插入了,update一下。如果是寫Redis,那沒問題了,反正每次都是set,天然冪等性。

稍微復(fù)雜一點(diǎn),比如生產(chǎn)者發(fā)送每條數(shù)據(jù)的時候,里面加一個全局唯一的id,類似訂單id之類的東西,然后消費(fèi)到了之后,先根據(jù)這個id去比Redis里查一下,之前消費(fèi)過嗎?如果沒有消費(fèi)過,就處理,然后這個id寫Redis。如果消費(fèi)過了,那就別處理了,保證別重復(fù)處理相同的消息即可。

比如基于數(shù)據(jù)庫的唯一鍵來保證重復(fù)數(shù)據(jù)不會重復(fù)插入多條。因?yàn)橛形ㄒ绘I約束了,重復(fù)數(shù)據(jù)插入只會報錯,不會導(dǎo)致數(shù)據(jù)庫中出現(xiàn)臟數(shù)據(jù)。Kafka有個offset的概念,就是每個消息寫進(jìn)去,都有一個offset,代表消息的序號,然后 consumer 消費(fèi)了數(shù)據(jù)之后,每隔一段時間(定時定期),會把自己消費(fèi)過的消息的 offset提交一下,表示“我已經(jīng)消費(fèi)過了,下次要是重啟什么的,就從上次消費(fèi)到的 offset來繼續(xù)消費(fèi)”。

有這么個場景。數(shù)據(jù) 1/2/3 依次進(jìn)入 Kafka,Kafka 會給這三條數(shù)據(jù)每條分配一個 offset,
代表這條數(shù)據(jù)的序號,我們就假設(shè)分配的 offset 依次是 152/153/154。消費(fèi)者從 Kafka 
去消費(fèi)的時候,也是按照這個順序去消費(fèi)。假

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

分享題目:MQ消息隊(duì)列冪等性和順序性-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://muchs.cn/article38/cecepp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、虛擬主機(jī)、外貿(mào)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管