消費重試策略
本文介紹云消息隊列 RabbitMQ 版服務端默認的消費重試策略,幫助您理解消費失敗后的消息處理邏輯,并選擇合適的消息處理策略。
消費重試流程
消費重試機制通過在臨時性故障發生時自動重新嘗試發送或處理消息,提升系統的可靠性和數據一致性。
Ready:已在隊列中等待被消費的消息。
Unack:消費者已取走消息但未確認處理,表示消息已接收但處理未完成。
重試策略屬性
消費重試策略由兩個關鍵屬性構成:消費超時時間和最大重試次數。
消費超時時間
指消費者在接收和處理消息時允許的最大時間限制。如果消費者未能在這個時間內完成當前消息的消費,這條消息會重新變為 Ready 狀態,可被其它消費者獲取處理。設置合理的消費超時時間優點:
避免長時間掛起:合理的消費超時時間可以防止消費者在處理消息時長時間掛起,導致其他消息堆積,影響系統的整體性能。
確保消息處理的可靠性:如果一個消費者長時間無法處理某條消息,云消息隊列 RabbitMQ 版會將消息重新投遞給其他消費者,確保消息能夠被及時處理。
最大投遞次數
最大投遞次數(Maximum Delivery Attempt)是指系統將一條消息嘗試投遞給消費者的最大次數限制。設置合理的最大投遞次數優點:
避免無限重試:通過設置最大投遞次數,避免消息無限重復投遞,防止系統資源浪費。
故障轉移:當達到最大投遞次數后,系統可以將消息轉發到死信隊列,后續開發人員可進行分析并處理。
隊列的x-delivery-limit
屬性表示最大重投次數,最大投遞次數=x-delivery-limit+1
。
實例重試策略參數說明
實例類型 | Serverless系列實例 | 預付費系列實例 | ||
預留+彈性 /按累積量 | 專業版 | 企業版 | 鉑金版 | |
消費超時時間 | 15分鐘 默認值:5分鐘 | 10分鐘 默認值:1分鐘 | 15分鐘 默認值:5分鐘 | 60分鐘 默認值:30分鐘 |
最大投遞次數 | 16 默認值:16 | 16 默認值:16 | 16 默認值:16 | 64 默認值:16 |
修改消費重試策略
在概覽頁面的資源分布區域,選擇地域,單擊目標實例。
實例重試策略
在實例詳情頁面,單擊重試策略頁簽的編輯。
在修改重試策略面板,根據上文的取值范圍設置最大投遞次數及消費超時時間的數值。
隊列重試策略
單擊左側導航欄的Queue列表,然后單擊目標隊列。
在Queue詳情頁面,單擊重試策略頁簽的編輯。
在修改重試策略面板,根據上文的取值范圍設置是否繼承實例配置、最大投遞次數及消費超時時間的數值。
如果Queue繼承實例配置表示當前Queue的重試策略繼承了實例級別的配置,當實例級別的配置變更了,則當前Queue的重試策略配置也會隨著變更。
如果Queue不繼承實例配置則表示當前Queue的重試策略配置不會隨著實例級別的配置變更而變更,且Queue的重試策略配置優先級高于實例級別的配置。
單擊確定。