ActiveMQ 教程 - Amazon MQ
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

ActiveMQ 教程

以下教程介绍如何创建和连接到 ActiveMQ 代理。要使用 ActiveMQ Java 示例代码,您必须安装 Java 标准版开发工具包并对代码进行一些更改。

步骤 3:(可选)Connect 到 Amazon Lambda 函数

Amazon Lambda 可以连接并使用来自您的 Amazon MQ 代理的消息。当您将代理连接到 Lambda 时,可以创建事件源映射,从队列中读取消息并同步调用函数。您创建的事件源映射分批从您的代理中读取消息,并以 JSON 对象的形式将它们转换为 Lambda 负载。

将您的代理连接到 Lambda 函数
  1. 将以下 IAM 角色权限添加到 Lambda 函数执行角色

    注意

    如果没有必要的 IAM 权限,您的函数将无法从 Amazon MQ 资源中成功读取记录。

  2. (可选)如果您创建了一个没有公开可访问性的代理,则必须执行下面其中一项操作以允许 Lambda 连接到您的代理:

    • 为每个公有子网配置一个 NAT 网关。有关更多信息,请参阅《Amazon Lambda 开发人员指南》中的VPC 连接函数的互联网和服务访问

    • 使用 VPC 终端节点在您的 Amazon Virtual Private Cloud(Amazon VPC)和 Lambda 之间创建连接。您的 Amazon VPC 还必须连接到 Amazon Security Token Service (Amazon STS) 和 Secrets Manager 终端节点。有关更多信息,请参阅《Amazon Lambda 开发人员指南》中的为 Lambda 配置接口 VPC 终端节点

  3. 使用 Amazon Web Services Management Console为 Lambda 函数配置代理作为事件源。您也可以使用该create-event-source-mapping Amazon Command Line Interface 命令。

  4. 为 Lambda 函数编写一些代码来处理从您的代理使用的消息。事件源映射检索的 Lambda 负载取决于代理的引擎类型。以下是适用于 Amazon MQ for ActiveMQ 队列的 Lambda 负载示例。

    注意

    在该示例中,testQueue 是队列的名称。

    { "eventSource": "aws:amq", "eventSourceArn": "arn:aws:mq:us-west-2:112556298976:broker:test:b-9bcfa592-423a-4942-879d-eb284b418fc8", "messages": { [ { "messageID": "ID:b-9bcfa592-423a-4942-879d-eb284b418fc8-1.mq.us-west-2.amazonaws.com-37557-1234520418293-4:1:1:1:1", "messageType": "jms/text-message", "data": "QUJDOkFBQUE=", "connectionId": "myJMSCoID", "redelivered": false, "destination": { "physicalname": "testQueue" }, "timestamp": 1598827811958, "brokerInTime": 1598827811958, "brokerOutTime": 1598827811959 }, { "messageID": "ID:b-9bcfa592-423a-4942-879d-eb284b418fc8-1.mq.us-west-2.amazonaws.com-37557-1234520418293-4:1:1:1:1", "messageType":"jms/bytes-message", "data": "3DTOOW7crj51prgVLQaGQ82S48k=", "connectionId": "myJMSCoID1", "persistent": false, "destination": { "physicalname": "testQueue" }, "timestamp": 1598827811958, "brokerInTime": 1598827811958, "brokerOutTime": 1598827811959 } ] } }

有关将 Amazon MQ 连接到 Lambda、Lambda 为 Amazon MQ 事件源提供支持的选项和事件源映射错误的更多信息,请参阅《Amazon Lambda 开发人员指南》中的将 Lambda 与 Amazon MQ 结合使用