【问题标题】:AWS gives us Amazon MQ but how can I trigger a Lambda?AWS 为我们提供了 Amazon MQ,但我如何才能触发 Lambda?
【发布时间】:2018-05-20 20:02:45
【问题描述】:

关于 Amazon MQ 服务的好消息,但现在出现的问题是如何在特定队列上的消息上触发 Lambda 函数 (Node.js)?

我在想我是否可以通过某种方式在消息 PUT 或其他可以触发 Lambda 以使用队列中的消息的触发器上发布 SNS 主题...

有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

    AWS 最近宣布

    https://aws.amazon.com/about-aws/whats-new/2020/11/aws-lambda-supports-amazon-mq-apache-activemq-event-source/

    我们现在可以在 lambda 中添加 Trigger 作为 MQ。然后配置

    • 经纪人网址
    • 批量大小
    • 队列名称

    【讨论】:

    • 是的,几周前我注意到了,但我们现在已经在 SQS 和 EventBridge 之上构建了一切...... :)
    【解决方案2】:

    这是 AWS 描述的一种方法 - https://aws.amazon.com/blogs/compute/invoking-aws-lambda-from-amazon-mq/

    基本上,为 lambda 设置一个云监视触发器,开始轮询 MQ 消息并处理这些消息

    【讨论】:

    • 那篇文章有缺陷。它以图形和云监视触发方法的说明打开。然后,该示例继续演示一个 5 分钟唤醒计时器上的 lambda,该计时器从队列中拉出
    • 这里是一个 repo,它给出了一个比博文github.com/aws-samples/amazonmq-invoke-aws-lambda更完整的例子
    【解决方案3】:

    没有本地方法可以做到这一点。 Amazon 的托管 ActiveMQ 服务只是在 EC2 中运行的 ActiveMQ 的托管部署。它没有与其他服务集成。

    您需要编写一个队列使用者并让它在服务器上运行并在 ActiveMQ 上监听队列并将这些消息发布到 SNS 或直接通过 Lambda API 调用 Lambda 函数等。

    (至少目前如此。)

    【讨论】:

    • 感谢 m8!我已经猜到了……太糟糕了,因为如果有一个 Lambda 触发器会很棒。由于 SQS 也缺少一个,这有点令人沮丧。 ActiveMQ 可以“调用”一个 API 网关 API 吗?现在我们可以将 API GW 放置在 VPC 中,这样它就会是“内部的”......
    • @Anders API 网关的“内部”方面是指它能够连接到您的 VPC(Web 服务器)内的资源以提交 HTTP 请求,而无需通过 Internet 进入。 ActiveMQ 没有伸出手——就像 SQS,消费者首先连接到它,然后它开始发送消息。一个显着的区别是消费者可以使用持久的 TCP 连接,而不是 HTTP 长轮询。你需要一个自制的桥来与其他东西互连。
    • 我一直在修补我认为作为 SaaS 产品提供的 SQS/Lambda 桥,您可以将其配置为执行诸如“从队列中获取消息并使用它们来调用 Lambda函数,最大并发数为 5”等,但我犹豫是否尝试营销它,因为我认为 AWS 会在某个时候推出类似的东西......但他们上周在 re:Invent 上没有宣布类似的东西.如果您有兴趣进行 Beta 测试,请告诉我。
    • 当然,是的,我们有兴趣了解更多详情!当我们有一个 ESB 产品时,我们最初使用 SQS 来触发平台事件,但是我们迁移到了 Lambda,我在 Lambda 中构建了一个“SQS Poller”,它每 5 分钟调用一次以保持它运行,但最终它还是失败了......如果你有,你可以把你想出的任何细节发给我!谢谢!
    猜你喜欢
    • 2017-02-02
    • 2018-03-01
    • 2022-01-24
    • 1970-01-01
    • 2017-07-22
    • 2022-11-02
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    相关资源
    最近更新 更多