簡體   English   中英

AWS Lambda + SQS (Java)。 Lambda 已成功完成工作,但未從 SQS 中刪除消息。 是否應再次發送此消息以進行處理?

[英]AWS Lambda + SQS (Java). Lambda successfully was finished work but didn't delete message from SQS. Should this message be sent to process again?

我遇到了這種 aws sqs 行為。

我有 lambda 是由 api 網關觸發的。 在此 lambda 中,在某些情況下我需要重新處理傳入的請求。 因此,在這種情況下,我將傳入請求作為消息發送到延遲(30 秒)的 sqs。 在 sqs 中,“默認可見性超時”設置為 1 分鍾並鏈接 dlq 隊列。

在 lambda 我有下一個邏輯:

  1. 當我收到 api 網關的請求並且我的 lambda 決定重新處理它時,它第一次將消息發送到 sqs 進行重新處理。 他們我的 lambda 在 30 秒內收到消息。 好的。

  2. 但是當在這個重新處理過程中我需要再次重新處理它時,我的 lambda 什么都不做,只是完成了。 因為在 aws 文檔中說對於 sqs 中的消息確認,我需要發送刪除請求。 Lambda 不會發送它。 我認為它應該工作。 但不是。

  3. 然后我的 lambda 不會再次收到此消息,而且我也沒有在隊列中看到該消息。

  4. 但是當我拋出異常而不是簡單地完成工作時,lambda 再次收到消息。

這是否真的需要拋出異常以再次從 sqs 獲取消息到 lambda,而不是簡單地不發送消息的刪除請求。

謝謝!

正如您為 SQS 編寫的文檔所說,需要從隊列中刪除消息才能被視為已處理。 否則,它們將被視為未處理,並且 SQS 將嘗試再次傳送它們,直到達到配置的限制。

如果 AWS 文檔說了些什么並且 AWS 分別有效,那么就沒有必要問 AWS 文檔是否真的正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM