尽管已由lamdba处理,但SQS消息仍在运行中

时间:2018-11-21 16:32:12

标签: aws-lambda amazon-sqs

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分钟

2 个答案:

答案 0 :(得分:0)

您似乎缺少一些右括号/大括号。 是否在handleSQSMessages回调中调用了处理程序回调?缺少括号的情况很难分辨-否则,这可能就是失败的原因。

答案 1 :(得分:0)

您可以将context.callbackWaitsForEmptyEventLoop设置为false以立即发送回调响应,而不是等待所有事件循环任务完成。