【问题标题】:SNS Topics and LambdaSNS 主题和 Lambda
【发布时间】:2018-08-17 17:36:22
【问题描述】:

我需要处理来自 SNS 主题的一些通知。我正在考虑在 Lambda 函数中处理此消息。 我必须牢记实施

  1. 为主题订阅 Lambda 函数并处理通知
  2. 为主题订阅 SQS 队列 (Fifo),然后订阅 Lambda 函数 将根据队列中的通知调用。

消息的顺序是消费者应用程序的导入。牢记这一点,哪一个似乎是更好的实现。任何指针/解释都会有所帮助。

【问题讨论】:

  • 订购要求有多严格?消息速度是多少(即每分钟 1 条消息或每秒 100,000 条消息)? Lambda 可能不是您最好的选择,因为如果消息顺序是绝对的,它就不能很好地扩展。
  • 操作的频率非常低——一个小时有几百个通知。消息与 aws 资源的生命周期相关,包括应用程序 - 例如创建、部署、删除。所以秩序对我们来说很重要。

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


【解决方案1】:

这听起来更像是多个有些独立的消息流。因此,如果 EC2-1 的 created 事件先于 EC2-2 的事件出现,则确实没有问题。在这种情况下,我会坚持使用 SNS -> Lambda 方法,因为 SQS 方法需要轮询队列。如果不使用 Lambda,它不会花费任何费用,但您(最终)会为 SQS 轮询付费。

有很多关于如何处理传入消息的示例。例如,在 Java 中,您可以使用 POJO handlers(Lambda 已为其完成反序列化的普通 Java 对象,或者您可以使用 predefined objects在这种情况下,它是特定于 SNS 的。

【讨论】:

  • 看来我必须在这里添加一些说明 - 我之前的声明“aws 资源”过于笼统。对此表示歉意。我所说的 aws 资源是指应用程序(如微服务)。每个应用程序都有一个由一个治理系统(应用程序)管理的生命周期。这将触发该主题的事件。这里的消费者是一个显示当前状态的仪表板(这就是订单很重要的原因)。
  • @kallada - 我仍然觉得这是有效的。除非您的服务在几毫秒内经历多次状态更改,否则不应该有任何排序问题
  • 非常感谢。我只是红了,现在 lambda 可以使用 SQS 作为事件源来触发函数以避免轮询。 aws.amazon.com/blogs/aws/…
  • 嗯,没有投票,但正在进行投票 - 来自链接 There are no additional charges for this feature, but because the Lambda service is continuously long-polling the SQS queue the account will be charged for those API calls at the standard SQS pricing rates. 还要小心 - 再次,来自链接 - Lambda will automatically scale out horizontally consume the messages in my queue. - 订购可能是一个问题,具体取决于服务转换时间。
【解决方案2】:

您可以将 SQS FIFO 队列订阅到 SNS FIFO 主题。然后,您可以让队列按顺序触发 Lambda 函数。这是一个例子:https://docs.aws.amazon.com/sns/latest/dg/fifo-example-use-case.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 2021-05-14
    • 2020-07-08
    • 2018-02-27
    • 2018-04-21
    • 2018-12-10
    相关资源
    最近更新 更多