簡體   English   中英

將消息放回 AWS SQS,用於由 Lambda 處理但在內部失敗的消息

[英]Putting back messages on AWS SQS, for messages processed by Lambda but failed internally

我對 SQS Lambda 集成相當陌生,並試圖了解我的用例的最佳方法。

我有一個 SQS Lambda 集成。 我的 Lambda 函數正在接收來自 SQS 的消息並調用外部 API 來處理消息。 Lambda 函數將一次接收一條消息,批量大小設置為 1。

    @Override
    public Void handleRequest(SQSEvent event, Context context) {
        Response response = null;
        if (event != null) {
            for (SQSMessage msg : event.getRecords()) {
                response = callXXXAPI(msg.getBody(), reqId, logger);
            }
        }
            return null;
    }

我正在尋找一種方法來捕獲來自外部 API 調用的任何錯誤響應,並將響應失敗(非 200 狀態)的消息放回到隊列中。 這些 API 失敗的消息當前不會返回隊列,因為它們被視為“已處理”。 有沒有辦法用我當前的設置來做到這一點? 是否推薦?

SQS 還有一個死信隊列。

如果您修改函數代碼以在 API 調用失敗時拋出Exception ,Lambda/SQS 集成會​​將其視為失敗並將消息放回隊列中。

如果您希望在將消息發送到 DLQ 之前多次重試消息,您還需要將Maximum receives數配置為大於1某個數字。

如果外部 API 調用失敗,則拋出異常。

暫無
暫無

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

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