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分钟
答案 0 :(得分:0)
您似乎缺少一些右括号/大括号。 是否在handleSQSMessages回调中调用了处理程序回调?缺少括号的情况很难分辨-否则,这可能就是失败的原因。
答案 1 :(得分:0)
您可以将context.callbackWaitsForEmptyEventLoop
设置为false
以立即发送回调响应,而不是等待所有事件循环任务完成。