【问题标题】:AWS SNS processing multiple message in one LambdaAWS SNS 在一个 Lambda 中处理多条消息
【发布时间】:2020-06-12 08:10:15
【问题描述】:

我有一个流程会在很短的时间内发布许多将由 Lambda 处理的 SNS 消息。但是,Lambda 当时正在处理它。它是一种应用类似于 SQS 长池的方法吗?

我有代码:

exports.saveLog = async (event) => {
  console.log('Event : ', event.Records.length);

  event.Records.forEach(record => {
    const sql = record.Sns.Message;
...

我希望 Lambda 收到一组消息,如果它们在短时间内发布 - 有可能吗?

【问题讨论】:

  • 你能定义短时间吗?您可以进行的唯一更改是调整 Lambda 事件的 Batch size 选项。
  • 最多 1 秒 - 我没有看到带有 Lambda 或 SNS 的选项 batch size
  • 如果您查看 Lambda 上的触发器,您应该能够在那里更新选项
  • 如果触发器是 SQS 而不是 SNS,则此选项可用
  • 您的 lambda 表达式是否没有横向扩展以并行处理它们?

标签: amazon-web-services aws-lambda amazon-sns


【解决方案1】:

Amazon SNS 本质上只是一个发布-订阅系统,它允许您发布一条消息,然后分发到一个或多个订阅的终端节点。

要在单个下游进程中处理多条消息,您可以添加一个从 SNS 主题中提取消息的 Amazon SQS 队列和一个从队列中批量检索消息的 Lambda 函数。

【讨论】:

  • 如果批处理包含 10 条消息和第 7 条消息处理失败并抛出异常,该怎么办。 lamda 如何让 sqs 知道只删除目前处理的 6 条消息?
  • @ManishRawat 你需要用 batchItemFailures 配置你的 lambda:docs.aws.amazon.com/lambda/latest/dg/…
猜你喜欢
  • 2021-10-03
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
  • 2021-10-18
  • 1970-01-01
  • 2017-04-18
  • 2017-12-30
相关资源
最近更新 更多