分布式消息服務(wù)DMS如何實(shí)現(xiàn)死信消息的消費(fèi),相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的宿城網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
死信消息是什么
死信消息是指無(wú)法被正常消費(fèi)的消息。分布式消息服務(wù)DMS支持對(duì)消息進(jìn)行異常處理。當(dāng)消息進(jìn)行多次重復(fù)消費(fèi)仍然失敗后,DMS會(huì)將該條消息轉(zhuǎn)存到死信隊(duì)列中,有效期為72小時(shí),用戶可以根據(jù)需要對(duì)死信消息進(jìn)行重新消費(fèi)。消費(fèi)死信消息時(shí),只能消費(fèi)該消費(fèi)組產(chǎn)生的死信消息。全局有序的普通隊(duì)列的死信消息依然按照先入先出(FIFO)的順序存儲(chǔ)在死信隊(duì)列中。
如何消費(fèi)死信消息
消費(fèi)指定消費(fèi)組產(chǎn)生的死信消息??赏瑫r(shí)消費(fèi)多條消息,每次消費(fèi)的消息負(fù)載不超過(guò)512KB。僅NORMAL隊(duì)列和FIFO隊(duì)列可以開(kāi)啟死信消息,因?yàn)橹挥蠳ORMAL隊(duì)列和FIFO隊(duì)列可消費(fèi)死信消息。
URI
GET /v1.0/{project_id}/queues/{queue_id}/groups/{consumer_group_id}/deadletters?max_msgs={max_msgs}&time_wait={time_wait}&ack_wait={ack_wait}
參數(shù)說(shuō)明請(qǐng)參見(jiàn)下表:
名稱(chēng) | 類(lèi)型 | 是否必選 | 說(shuō)明 | 取值范圍 |
project_id | string | 是 | 項(xiàng)目ID。 | N/A |
queue_id | string | 是 | 指定的隊(duì)列ID。 | N/A |
consumer_group_id | String | 是 | 消費(fèi)組的ID。從查看指定隊(duì)列的所有消費(fèi)組的響應(yīng)消息中獲取消費(fèi)組ID。 | N/A |
max_msgs | int | 否 | 獲取可消費(fèi)的死信消息的條數(shù)。 說(shuō)明: 單次消費(fèi)返回的消息數(shù)量可能會(huì)少于指定條數(shù),但多次消費(fèi)最終可獲取全部消息。 | 取值范圍:1~10。 默認(rèn)值:10 |
time_wait | int | 否 | 設(shè)定消費(fèi)組中可消費(fèi)的死信為0時(shí)的讀取消息等待時(shí)間。 如果在等待時(shí)間內(nèi)有新的死信消息,則立即返回消費(fèi)結(jié)果,如果等待時(shí)間內(nèi)沒(méi)有新的死信消息,則到等待時(shí)間后返回消費(fèi)結(jié)果。 | 取值范圍:1~60s 默認(rèn)值:3s 說(shuō)明:不帶該參數(shù)或者配置為空,都默認(rèn)為3s。 |
ack_wait | int | 否 | commit提交超時(shí)時(shí)間,在該時(shí)間內(nèi)提交確認(rèn),確認(rèn)有效,如果超過(guò)指定時(shí)間,系統(tǒng)會(huì)報(bào)消息確認(rèn)超時(shí),或handler無(wú)效。 | 取值范圍:15~300s 默認(rèn)值:30s 說(shuō)明:不帶該參數(shù)或者配置為空,都默認(rèn)為30s。 |
響應(yīng)參數(shù)
參數(shù) | 類(lèi)型 | 描述 |
message | JSON對(duì)象 | 消息的內(nèi)容 |
handler | string | 消息handler |
message參數(shù)
參數(shù) | 類(lèi)型 | 描述 |
body | JSON | 消息體的內(nèi)容。 |
attributes | JSON對(duì)象 | 屬性的列表。 |
如何確認(rèn)已消費(fèi)死信消息
在消費(fèi)者消費(fèi)死信消息期間,死信消息仍然停留在隊(duì)列中,但死信消息從被消費(fèi)開(kāi)始的30秒內(nèi)不能被該消費(fèi)組再次消費(fèi),若在這30秒內(nèi)沒(méi)有被消費(fèi)者確認(rèn)消費(fèi),則DMS認(rèn)為死信消息未消費(fèi)成功,將可以被繼續(xù)消費(fèi)。
如果死信消息被確認(rèn)消費(fèi)成功,該死信消息將不能被該消費(fèi)組再次消費(fèi),死信消息的保留時(shí)間為72小時(shí)(除非消費(fèi)組被刪除),72小時(shí)后會(huì)被刪除。
消息批量消費(fèi)確認(rèn)時(shí),必須嚴(yán)格按照消息消費(fèi)的順序提交確認(rèn),DMS按順序判定消息是否消費(fèi)成功,如果某條消息未確認(rèn)或消費(fèi)失敗,則不再繼續(xù)檢測(cè),默認(rèn)后續(xù)消息全部消費(fèi)失敗。建議當(dāng)對(duì)某一條消息處理失敗時(shí),不再需要繼續(xù)處理本批消息中的后續(xù)消息,直接對(duì)已正確處理的消息進(jìn)行確認(rèn)。
注意,僅NORMAL隊(duì)列和FIFO隊(duì)列可以開(kāi)啟死信消息,因?yàn)橹挥蠳ORMAL隊(duì)列和FIFO隊(duì)列可消費(fèi)死信消息。
URI
POST /v1.0/{project_id}/queues/{queue_id}/groups/{consumer_group_id}/deadletters/ack
參數(shù)說(shuō)明請(qǐng)參見(jiàn)下表:
名稱(chēng) | 類(lèi)型 | 是否必選 | 說(shuō)明 |
project_id | string | 是 | 項(xiàng)目ID。 |
queue_id | string | 是 | 隊(duì)列ID。 |
consumer_group_id | string | 是 | 消費(fèi)組ID。 |
請(qǐng)求參數(shù)和message參數(shù)如下表所示:
名稱(chēng) | 類(lèi)型 | 是否必選 | 說(shuō)明 |
message | array | 是 | 確認(rèn)消息數(shù)組。 |
名稱(chēng) | 類(lèi)型 | 是否必選 | 說(shuō)明 |
handler | string | 是 | 消費(fèi)時(shí)返回的ID。 |
status | string | 是 | 客戶端處理數(shù)據(jù)的狀態(tài)。 取值為“success”或者“fail”。 |
響應(yīng)參數(shù)
響應(yīng)參數(shù)如下表所示:
參數(shù) | 類(lèi)型 | 描述 |
success | int | 確認(rèn)成功的數(shù)目(如果為N,則表示前N條死信消息確認(rèn)成功)。 |
fail | int | 確認(rèn)失敗的數(shù)目(如果為N,則表示后N條死信消息確認(rèn)失?。?/p> |
看完上述內(nèi)容,你們掌握分布式消息服務(wù)DMS如何實(shí)現(xiàn)死信消息的消費(fèi)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)站標(biāo)題:分布式消息服務(wù)DMS如何實(shí)現(xiàn)死信消息的消費(fèi)
文章源于:http://www.rwnh.cn/article44/pcogee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開(kāi)發(fā)、微信公眾號(hào)、服務(wù)器托管、面包屑導(dǎo)航、定制網(wǎng)站、小程序開(kāi)發(fā)
聲明:本網(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)