一個(gè)數(shù)據(jù)或者一個(gè)請(qǐng)求,重復(fù)操作多次,得確保對(duì)應(yīng)的數(shù)據(jù)是不會(huì)改變的。一條數(shù)據(jù)重復(fù)出現(xiàn)兩次,數(shù)據(jù)庫(kù)里就只有一條數(shù)據(jù),這就保證了系統(tǒng)的冪等性。
創(chuàng)新互聯(lián)公司長(zhǎng)期為成百上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為邢臺(tái)縣企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站,邢臺(tái)縣網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。如何保證消息消費(fèi)的冪等性
向數(shù)據(jù)庫(kù)寫庫(kù),先根據(jù)主鍵查一下,如果這數(shù)據(jù)已經(jīng)有了,就別插入了,update一下。如果是寫Redis,那沒問(wèn)題了,反正每次都是set,天然冪等性。
稍微復(fù)雜一點(diǎn),比如生產(chǎn)者發(fā)送每條數(shù)據(jù)的時(shí)候,里面加一個(gè)全局唯一的id,類似訂單id之類的東西,然后消費(fèi)到了之后,先根據(jù)這個(gè)id去比Redis里查一下,之前消費(fèi)過(guò)嗎?如果沒有消費(fèi)過(guò),就處理,然后這個(gè)id寫Redis。如果消費(fèi)過(guò)了,那就別處理了,保證別重復(fù)處理相同的消息即可。
比如基于數(shù)據(jù)庫(kù)的唯一鍵來(lái)保證重復(fù)數(shù)據(jù)不會(huì)重復(fù)插入多條。因?yàn)橛形ㄒ绘I約束了,重復(fù)數(shù)據(jù)插入只會(huì)報(bào)錯(cuò),不會(huì)導(dǎo)致數(shù)據(jù)庫(kù)中出現(xiàn)臟數(shù)據(jù)。Kafka有個(gè)offset的概念,就是每個(gè)消息寫進(jìn)去,都有一個(gè)offset,代表消息的序號(hào),然后 consumer 消費(fèi)了數(shù)據(jù)之后,每隔一段時(shí)間(定時(shí)定期),會(huì)把自己消費(fèi)過(guò)的消息的 offset提交一下,表示“我已經(jīng)消費(fèi)過(guò)了,下次要是重啟什么的,就從上次消費(fèi)到的 offset來(lái)繼續(xù)消費(fèi)”。
有這么個(gè)場(chǎng)景。數(shù)據(jù) 1/2/3 依次進(jìn)入 Kafka,Kafka 會(huì)給這三條數(shù)據(jù)每條分配一個(gè) offset,
代表這條數(shù)據(jù)的序號(hào),我們就假設(shè)分配的 offset 依次是 152/153/154。消費(fèi)者從 Kafka
去消費(fèi)的時(shí)候,也是按照這個(gè)順序去消費(fèi)。假
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
分享題目:MQ消息隊(duì)列冪等性和順序性-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://www.rwnh.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)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容