本文部份內容節選自華爲雲幫助中心的分佈式消息服務(DMS)服務的產品介紹html
死信消息是什麼api
死信消息是指沒法被正常消費的消息。分佈式消息服務DMS支持對消息進行異常處理。當消息進行屢次重複消費仍然失敗後,DMS會將該條消息轉存到死信隊列中,有效期爲72小時,用戶能夠根據須要對死信消息進行從新消費。消費死信消息時,只能消費該消費組產生的死信消息。全局有序的普通隊列的死信消息依然按照先入先出(FIFO)的順序存儲在死信隊列中。數組
如何消費死信消息分佈式
消費指定消費組產生的死信消息。可同時消費多條消息,每次消費的消息負載不超過512KB。僅NORMAL隊列和FIFO隊列能夠開啓死信消息,由於只有NORMAL隊列和FIFO隊列可消費死信消息。spa
URIhtm
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}對象
參數說明請參見下表:隊列
名稱ci |
類型get |
是否必選 |
說明 |
取值範圍 |
project_id |
string |
是 |
項目ID。 |
N/A |
queue_id |
string |
是 |
指定的隊列ID。 |
N/A |
consumer_group_id |
String |
是 |
消費組的ID。從查看指定隊列的全部消費組的響應消息中獲取消費組ID。 |
N/A |
max_msgs |
int |
否 |
獲取可消費的死信消息的條數。 說明: 單次消費返回的消息數量可能會少於指定條數,但屢次消費最終可獲取所有消息。 |
取值範圍:1~10。 默認值:10 |
time_wait |
int |
否 |
設定消費組中可消費的死信爲0時的讀取消息等待時間。 若是在等待時間內有新的死信消息,則當即返回消費結果,若是等待時間內沒有新的死信消息,則到等待時間後返回消費結果。 |
取值範圍:1~60s 默認值:3s 說明:不帶該參數或者配置爲空,都默認爲3s。 |
ack_wait |
int |
否 |
commit提交超時時間,在該時間內提交確認,確認有效,若是超過指定時間,系統會報消息確認超時,或handler無效。 |
取值範圍:15~300s 默認值:30s 說明:不帶該參數或者配置爲空,都默認爲30s。 |
響應參數
參數 |
類型 |
描述 |
message |
JSON對象 |
消息的內容 |
handler |
string |
消息handler |
message參數
參數 |
類型 |
描述 |
body |
JSON |
消息體的內容。 |
attributes |
JSON對象 |
屬性的列表。 |
如何確認已消費死信消息
在消費者消費死信消息期間,死信消息仍然停留在隊列中,但死信消息從被消費開始的30秒內不能被該消費組再次消費,若在這30秒內沒有被消費者確認消費,則DMS認爲死信消息未消費成功,將能夠被繼續消費。
若是死信消息被確認消費成功,該死信消息將不能被該消費組再次消費,死信消息的保留時間爲72小時(除非消費組被刪除),72小時後會被刪除。
消息批量消費確認時,必須嚴格按照消息消費的順序提交確認,DMS按順序斷定消息是否消費成功,若是某條消息未確認或消費失敗,則再也不繼續檢測,默認後續消息所有消費失敗。建議當對某一條消息處理失敗時,再也不須要繼續處理本批消息中的後續消息,直接對已正確處理的消息進行確認。
注意,僅NORMAL隊列和FIFO隊列能夠開啓死信消息,由於只有NORMAL隊列和FIFO隊列可消費死信消息。
URI
POST /v1.0/{project_id}/queues/{queue_id}/groups/{consumer_group_id}/deadletters/ack
參數說明請參見下表:
名稱 |
類型 |
是否必選 |
說明 |
project_id |
string |
是 |
項目ID。 |
queue_id |
string |
是 |
隊列ID。 |
consumer_group_id |
string |
是 |
消費組ID。 |
請求參數和message參數以下表所示:
名稱 |
類型 |
是否必選 |
說明 |
message |
array |
是 |
確認消息數組。 |
名稱 |
類型 |
是否必選 |
說明 |
handler |
string |
是 |
消費時返回的ID。 |
status |
string |
是 |
客戶端處理數據的狀態。 取值爲「success」或者「fail」。 |
響應參數
響應參數如下表所示:
參數 |
類型 |
描述 |
success |
int |
確認成功的數目(若是爲N,則表示前N條死信消息確認成功)。 |
fail |
int |
確認失敗的數目(若是爲N,則表示後N條死信消息確認失敗)。 |
以上就是對分佈式消息服務DMS如何實現死信消息的消費的介紹,想要了解更多,歡迎點擊分佈式消息服務DMS查看。