【问题标题】:How to correctly send a message to the Queue - Javascript / AWS如何正确地将消息发送到队列 - Javascript / AWS
【发布时间】:2022-12-18 06:08:09
【问题描述】:

我有一个接收 SQSEvent 的简单 lambda。 我已经设置了一个 DLQ(死信队列)以防 lambda 无法处理消息。

const lambdaHandler = async (event: SQSEvent): Promise<APIGatewayProxyResult> {

  if(!event || !event.Records || !event.Records.length || !event.Records[0].body) {
        return {
            statusCode: 400,
            body: JSON.stringify({ message: 'Event and event body is required' })
        };
    } 

我认为我处理不当。 我发送一个 HTTP 响应并像 API 一样处理错误响应。

将消息发送到 DLQ 的正确方法应该是什么?

【问题讨论】:

    标签: javascript amazon-web-services


    【解决方案1】:

    如果 Lambda 函数返回错误响应,则消息将移至 SQS 队列。最简单的方法是抛出异常。如果每个 Lambda 事件有可能接收到多个 SQS 消息(如果您将消息批量大小设置为大于 1 的值),那么您应该考虑以以下格式返回 message batch response

    { 
      "batchItemFailures": [ 
            {
                "itemIdentifier": "id2"
            },
            {
                "itemIdentifier": "id4"
            }
        ]
    }
    

    最佳实践实际上是始终以该格式返回响应,如果没有错误,它将只是一个空列表。

    【讨论】:

      猜你喜欢
      • 2020-03-14
      • 1970-01-01
      • 2016-05-02
      • 2017-12-06
      • 2023-03-17
      • 1970-01-01
      • 2021-09-26
      • 2011-08-20
      • 1970-01-01
      相关资源
      最近更新 更多