SQS 在单个消息延迟传输时触发 Lambda



>我使用 CloudFormation 创建了以下资源

  • SQS (延迟交货 : 0(
  • 拉姆达
  • 角色
  • LambdaFunctionEventSourceMapping(SQS 触发 Lambda 函数(
  • 原木

已成功创建资源。

当我向 SQS 发送消息并延迟传送 30 秒时,SQS 会立即触发 Lambda。相反,它应该在 30 秒后触发。 仅供参考:我正在使用AWS控制台发送消息。

根据下面的链接,它应该将 SQS 延迟覆盖为单个消息延迟。 https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-message-timers.html

有没有其他方法可以实现这一点。

这可能是 AWS控制台的错误,因为在通过 AWS 控制台将消息发送到 SQS 时,我遇到了类似的问题(即时调用 lambda(。但是,如果我通过 CLI 将消息发送到 SQS,我可以实现所需的行为:

aws sqs send-message --queue-url https://sqs.ap-southeast-1.amazonaws.com/{account}/{sqs} --message-body "msg 1 delay 60 secs" --delay-seconds 60
aws sqs send-message --queue-url https://sqs.ap-southeast-1.amazonaws.com/{account}/{sqs} --message-body "msg 2 delay 30 secs" --delay-seconds 30

那么这就是我在lambda Cloudwatch日志中看到的内容:

2019-02-19T02:26:36.189Z    510df77b-d1e5-5297-b0a0-a39eba727c61    msg 2 delay 30 secs
2019-02-19T02:26:36.189Z    510df77b-d1e5-5297-b0a0-a39eba727c61    sent 2019-02-19T02:26:06.124Z
2019-02-19T02:26:36.189Z    510df77b-d1e5-5297-b0a0-a39eba727c61    1st receive 2019-02-19T02:26:36.124Z
2019-02-19T02:26:57.729Z    fedcb590-2e14-596a-bc4b-e17545a46d91    msg 1 delay 60 secs
2019-02-19T02:26:57.729Z    fedcb590-2e14-596a-bc4b-e17545a46d91    sent 2019-02-19T02:25:57.667Z
2019-02-19T02:26:57.729Z    fedcb590-2e14-596a-bc4b-e17545a46d91    1st receive 2019-02-19T02:26:57.667Z

从日志中可以看出,消息传递被适当延迟,并且仅在收到消息后调用 lambda。

相关内容

  • 没有找到相关文章

最新更新