本文介紹雲訊息佇列 RabbitMQ 版服務端預設的消費重試策略,協助您理解消費失敗後的訊息處理邏輯,並選擇合適的訊息處理策略。
消費重試流程
消費重試機制通過在臨時性故障發生時自動重新嘗試發送或處理訊息,提升系統的可靠性和資料一致性。
Ready:已在隊列中等待被消費的訊息。
Unack:消費者已取走訊息但未確認處理,表示訊息已接收但處理未完成。
重試策略屬性
消費重試策略由兩個關鍵屬性構成:消費逾時時間和最大重試次數。
消費逾時時間
指消費者在接收和處理訊息時允許的最大時間限制。如果消費者未能在這個時間內完成當前訊息的消費,這條訊息會重新變為 Ready 狀態,可被其他消費者擷取處理。設定合理的消費逾時時間優點:
避免長時間掛起:合理的消費逾時時間可以防止消費者在處理訊息時間長度時間掛起,導致其他訊息堆積,影響系統的整體效能。
確保訊息處理的可靠性:如果一個消費者長時間無法處理某條訊息,ApsaraMQ for RabbitMQ會將訊息重新投遞給其他消費者,確保訊息能夠被及時處理。
最大投遞次數
最大投遞次數(Maximum Delivery Attempt)是指系統將一條訊息嘗試投遞給消費者的最大次數限制。設定合理的最大投遞次數優點:
避免無限重試:通過設定最大投遞次數,避免訊息無限重複投遞,防止系統資源浪費。
容錯移轉:當達到最大投遞次數後,系統可以將訊息轉寄到無效信件佇列,後續開發人員可進行分析並處理。
隊列的x-delivery-limit屬性工作表示最大重投次數,最大投遞次數=x-delivery-limit+1。
執行個體重試策略參數說明
執行個體類型 | Serverless系列執行個體 | 預付費系列執行個體 | ||
共用 | 獨享 | 企業版 | 鉑金版 | |
預留+彈性 /按累積量 | 預留+彈性 | |||
消費逾時時間 | 最大值:3小時 預設值:5分鐘 | 最大值:12小時 預設值:30分鐘 | 最大值:3小時 預設值:5分鐘 | 最大值:12小時 預設值:30分鐘 |
最大投遞次數 | 最大值:16 預設值:16 | 最大值:16 預設值:16 | 最大值:16 預設值:16 | 最大值:64 預設值:16 |
修改消費重試策略
在概览頁面的资源分布地區,選擇地區,單擊目標執行個體。
執行個體重試策略
在实例详情頁面,單擊重试策略頁簽的编辑。
在修改重试策略面板,根據上文的取值範圍設定最大投递次数及消费超时时间的數值。
隊列重試策略
單擊左側導覽列的Queue列表,然後單擊目標隊列。
在Queue詳情頁面,單擊重试策略頁簽的编辑。
在修改重试策略面板,根據上文的取值範圍設定是否继承实例配置、最大投递次数及消费超时时间的數值。

如果Queue繼承執行個體配置表示當前Queue的重試策略繼承了執行個體層級的配置,當執行個體層級的配置變更了,則當前Queue的重試策略配置也會隨著變更。
如果Queue不繼承執行個體配置則表示當前Queue的重試策略配置不會隨著執行個體層級的配置變更而變更,且Queue的重試策略配置優先順序高於執行個體層級的配置。
單擊确定。