首页 > 解决方案 > 尽管 SQS 消息已由 lambda 处理,但它仍在传输中

问题描述

SQS 消息被 lambda 成功处理。这是处理然后执行回调的代码:

 exports.handler = function(event, context, callback) {
   handleSQSMessages(context,event, function () {
    const response = {
        statusCode: 200,
        body: JSON.stringify({
            message: 'SQS event processed.',
            input: event,
        }),
    };
    console.log ("OK DONE");
    callback(null, response);

function handleSQSMessages(context, messages, callback) {
 messages = messages.Records;
 if (messages && messages.length > 0) {
   messages.forEach(function(message) {
       console.log(message);
       //...

我看到 cloudwatch 打印出“OK DONE”消息。然而,SQS 使消息“处于飞行状态”(并且它永远处于飞行状态)。我的理解是,一旦发送成功响应,该消息将被自动删除。我的能见度计时器 = 10 分钟

标签: aws-lambdaamazon-sqs

解决方案


您似乎缺少一些右括号/花括号。处理程序回调是否在 handleSQSMessages 回调中被调用?缺少大括号很难说 - 但如果不是,那可能就是它失败的原因。


推荐阅读