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分钟。
forEach
。你的链接说,如果你不响应批处理(即给定的所有消息),那么它就不会删除这些消息。你是否在读取所有内容? - stdunbar