SQS ReceiveMessage успешно, но получает пустое сообщение - PullRequest
0 голосов
/ 23 октября 2018

У меня есть следующий код в лямбде для получения сообщений SQS: Когда я внедряю сообщение в SQS, лямбда запускает, но говорит, что data.Messages равно нулю.

function receiveMessages(callback)
{
    var params = {
        QueueUrl: TASK_QUEUE_URL,
        MaxNumberOfMessages: 2,
        WaitTimeSeconds: 1,
        AttributeNames: ["All"]
    };

    SQS.receiveMessage(params, function(err, data)
    {
        if (err)
        {
            console.error(err, err.stack);
            callback(err);
        }
        else if (data.Messages == null)
        {
            console.log("null message", data);
            callback(null,null);
        }
        else
        {
            callback(null, data.Messages);
        }
    });
}

Не очевидно, что я могу делать неправильно.Я попробовал как очереди FIFO, так и не FIFO

1 Ответ

0 голосов
/ 23 октября 2018

Когда использует очередь SQS в качестве источника события Lambda , компонент службы Lambda фактически опрашивает очередь и передает полезную нагрузку сообщения в вызов функции в массиве event.Records, который будет содержатьодно или несколько сообщений из очереди.Сообщения временно не видны в очереди (они «в полете»).

Вам не нужно напрямую взаимодействовать с SQS в этом приложении.

Вы обрабатываете сообщения и выходите изЛямбда-функция успешно работает, и все только что переданные вам сообщения автоматически удаляются из очереди с помощью лямбда-опроса.

Если выдается исключение, все сообщения, которые вы только что передали, возвращаются к отображению в очереди..

...