我正在閱讀有關死信隊列和re-drive策略的aws文檔,文檔中提到“重新驅動策略指定了源隊列、dead-letter隊列,以及如果源隊列的使用者未能處理指定次數的消息,AmazonSQS將消息從前者移動到后者的條件”。
然而,即使文檔多次提到“消息處理失敗”,我也不明白sqs如何檢測到消息處理失敗(從而觸發re-drive或移動到死信queue.)
據我所知,消費者應用程序調用receiveMessage從SQS檢索消息,然后處理消息。處理函數未作為lambda傳遞給receiveMessage。那么,SQS如何知道消息處理失敗?
當客戶端(例如lambda函數)從隊列中獲取消息時,調用DeleteMessage的時間有限。每條消息也有可見性超時。如果客戶端在可見性超時內未刪除消息,SQS“假設”處理失敗。
然后,這些消息可以轉發給SQS,具體取決于您設置的失敗嘗試次數。