SQS在5分钟内未按顺序触发Lambda [英] SQS does not trigger Lambda within 5 minutes in sequential
本文介绍了SQS在5分钟内未按顺序触发Lambda的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是AWS新手,正在使用SQS来触发lambda函数。 该函数的顺序为: 并将队列传递给SQS,然后SQS触发Lambda B。
当我运行Lambda A时,我看到Lambda B如我预期的那样被触发。然而,当我在最后一次运行Lambda A之后的5分钟内运行Lambda A时,Lambda B没有被触发。我想知道是否有使用SQS触发Lambda函数的默认时间设置为&5分钟&。如果是,我如何才能更改为<0分钟?
以前有没有人有过类似的问题?谢谢,
// Lambda A
// sends multiple messages to an Amazon SQS queue
module.exports.handler = async (event, context, callback) => {
try {
// sendQueue function is imported in the head of the file
await sendQueue({ queueMessage }, QUEUE_URL)
} catch (e) {
console.error(e)
}
return {
statusCode: 200,
body: JSON.stringify(
{
message: 'Lambda A is done',
input: event,
},
null,
2
),
}
}
// Lambda B
// After SQS receives queues from Lambda A, SQS triggers to invoke Lambda B
module.exports.handler = async (event, context, callback) => {
// here calling Athena query with "await"
return `Successfully processed a message.`;
}
在Lambda B中,该函数每次从SQS收到消息时都会获取消息内容,如下所示。
[
{
messageId: 'b4146e42-a542-4e0e-bff9-ba7f96xxxxxx',
receiptHandle: 'xxxxxxxxxxxxxxx',
body: '{"queueMessage": "queueMessage sample text"}',
attributes: {
ApproximateReceiveCount: '1',
SentTimestamp: '1643094105466',
SequenceNumber: '18867376164708847616',
MessageGroupId: '123',
SenderId: 'xxxxxxxx:lambda-function-name',
MessageDeduplicationId: 'xxxxxx',
ApproximateFirstReceiveTimestamp: '1643094105466'
},
messageAttributes: { ReceiveMessageWaitTimeSeconds: [Object] },
md5OfMessageAttributes: 'aaaaaaaa',
md5OfBody: 'bbbbbbb',
eventSource: 'aws:sqs',
eventSourceARN: 'arn:aws:xxx.fifo',
awsRegion: 'ap-northeast-1'
}
]
推荐答案
查看AWS documentation后,我发现下面这行
如果发送具有特定邮件重复数据消除ID的邮件 成功地,使用相同的邮件重复数据消除ID发送的任何邮件 已成功接受,但在5分钟内未交付 重复数据消除间隔。
基本上,使用SQS的FIFO队列,5分钟内发送的消息不会被投递,避免重复发送消息。
这篇关于SQS在5分钟内未按顺序触发Lambda的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文