2.4. 连接到 Amazon Simple Queue Service(SQS)
集成可以从 Amazon SQS 队列检索消息,或将消息发送到 Amazon SQS 队列。要做到这一点,请创建一个 Amazon SQS 连接,然后将该连接添加到集成流。详情请查看:
2.4.1. 创建 Amazon SQS 连接
您必须先创建 Amazon SQS 连接,然后才能将 Amazon SQS 连接添加到集成。
先决条件
- AWS 访问密钥。请参阅 获取 AWS 凭证。
- 您必须知道 SQS 队列所在的区域。这是您希望您要创建 SQS 连接以便发送消息或从中检索消息的队列。
流程
- 在 Fuse Online 中,在左侧面板中,单击 Connections 以显示任何可用的连接。
- 单击 Create Connection 以显示 Fuse Online 连接器。
- 点 Amazon SQS 连接器。
在 Access Key 字段中,在 AWS 帐户中输入属于用户访问密钥的 Amazon 访问密钥 ID,用于管理您要连接可访问的队列。
如果您要连接访问的队列不存在,那么当 Fuse Online 尝试运行集成时,它使用与此访问密钥关联的 AWS 帐户来创建队列。但是,如果队列已在其他 AWS 帐户中已存在,则连接无法创建队列,且集成无法启动。
- 在 Secret Key 字段中,为您指定的 Amazon 访问密钥 ID 输入 Amazon secret 访问密钥。
- 在 Region 字段中,选择队列中的 AWS 区域。如果连接创建了队列,它会在所选区域中创建它。
- 单击 Validate。Fuse Online 立即尝试验证连接并显示一条消息,指示验证是否成功。如果验证失败,请根据需要修改配置详情并重试。
- 验证成功后,单击 下一步。
-
在 Name 字段中输入您的选择的名称,帮助您将这个连接与任何其他连接区分开来。例如,输入
SQS South
。 -
在 Description 字段中输入任何有助于了解这个连接的信息。例如,输入
Sample SQS 连接来向我们的南北区域队列发送信息。
- 点 Save 以查看您创建的连接现在可用。如果您输入了示例名称,则 SQS South 显示为可选择添加到集成的连接。
2.4.2. 从 Amazon SQS 获取消息以触发集成执行
要通过从 Amazon SQS 队列获取信息来启动集成,请将 Amazon SQS 连接添加为简单的集成启动连接。
先决条件
- 您创建了 Amazon SQS 连接,该连接被配置为访问您要从中获取消息的队列。
- 您知道希望连接从中获取消息的 SQS 队列的名称。
流程
- 在左侧的 Fuse Online 面板中,单击 Integrations。
- 点 Create Integration。
- 在 Choose a connection 页面中,点击您要用来开始集成的 Amazon SQS 连接。
- 在 Choose a action 页面上,选择 Poll a Amazon SQS Queue 以定期从 SQS 队列检索消息。
配置此操作:
- 在 Delay 字段中,接受默认的 500 毫秒作为轮询之间的时间。或者,要指定不同的轮询间隔,请输入一个数字并选择其单位。
在 Maximum Objects to Retrieve 字段中,输入一个轮询操作可以获取的最大消息数。默认值为 10。
要对可以获取的信息数量没有限制,请指定
0
或一个负整数。当 Maximum Objects to Retrieve 为无限时,Pol poll 操作会获取 SQS 队列中的所有消息。- 在 Queue Name 或 Amazon Resource Name 字段中,指定要从检索消息的 SQS 队列的名称,或者指定队列的 ARN。如果具有此名称的队列不存在,连接会创建它。这是唯一必填字段。
- 指明您是否要 获取消息,然后从队列 中删除它们。获取消息,然后从队列中删除它们是默认行为。只有您希望连接检索信息并在队列中保留它们时,取消选择此选项。这意味着将再次检索消息。
- 如果消息通过 Camel 过滤器,指明是否希望获取消息并删除 消息。默认选择这个选项。当您要传递通过过滤器的消息,以确定是否将其从队列中删除时,请保留该消息。您不需要取消选择 Obtain 信息,然后从队列 中删除。Fuse Online 可确保在选择 Obtain 消息时正确的行为,如果通过 Camel 过滤器将其删除,则会删除消息。
- 点击 Next。
结果
连接会出现在集成流的开始。
后续步骤
如果您选择了 Obtain 消息,如果消息通过 Camel 过滤器将其删除, 则需要在该 SQS 连接后添加过滤器步骤。在 SQS 连接后,过滤器步骤不需要立即。将所有连接添加到集成,然后添加过滤器步骤。在执行过程中,如果有通过过滤器的消息,Fuse Online 使用相同连接(SQS 启动连接)从队列中删除这些消息。
2.4.3. 将消息发送到 Amazon SQS 队列
在流的中间,或完成简单集成,您可以将消息发送到 Amazon SQS 队列。
先决条件
- 您创建了 Amazon SQS 连接,该连接配置为访问您要发送消息的队列。
- 您知道希望连接要发送消息的 SQS 队列的名称。
- Fuse Online 会提示您添加到集成中,或选择用于简单集成的完成连接。
流程
- 在 Add to Integration 页面中,点您要添加连接的加号。如果 Fuse Online 提示您选择完成连接,请跳过这一步。
- 点您要用来发送消息的 Amazon SQS 连接。
选择您要连接执行的操作:
- 发送对象 向队列发送一条消息。
- 发送批处理对象 将批处理消息发送到队列。
在 Message group ID strategy 字段中,在 first-in, first-out(FIFO)队列中,接受
ConstantMessageGroupIdStrategy
,或者点击字段中的项并选择不同的策略。此参数的设置对简单队列没有影响。消息组 ID 标识消息所属的组。属于同一消息组的消息始终会按照与消息组的严格顺序处理。消息组 ID 策略决定连接如何将组 ID 分配给消息。这些选项是:
-
ConstantMessageGroupIdStrategy
the connection使用恒定分组消息。 -
ExchangeIdMessageGroupIdStrategy
the connection 使用交换 ID(在每条消息中)对消息进行分组。 -
PropertyValueMessageGroupIdStrategy
InventoryService-abrtThe connection 使用 internal 属性的值来对消息进行分组。
FIFO 队列旨在确保发送和接收消息的顺序严格保留,并且每个消息都完全处理一次。FIFO 队列名称具有
.fifo
作为后缀。-
在 Message deduplication ID 策略 字段中,对于 FIFO 队列,接受
NullMessageDeduplicationIdStrategy
,或者点击字段中选择ExchangeIdMessageDeduplicationIdStrategy
。此参数的设置对简单队列没有影响。对于 FIFO 队列,连接使用所选的策略来确保它不会向队列发送重复的消息。
-
NullMessageDeduplicationIdStrategy
使用消息正文作为 deduplication 元素。换句话说,连接比较消息正文,以识别重复的消息。 -
ExchangeIdMessageDeduplicationIdStrategy
使用消息的交换 ID 作为 deduplication 元素。换句话说,连接比较交换 ID 来识别重复的消息。
-
- 在 Queue Name 或 Amazon Resource Name 字段中输入要发送消息的队列的名称。如果队列不存在,连接会创建它。
- 在 Delay 字段中,接受默认值,即 0,无延迟。或者,要添加延迟,请指定一个数字。在发送消息前,集成会等待这个秒数。当消息使用者可能不会立即为连接发送的消息就绪时,这很有用。
- 点击 Next。
结果
这个连接会出现在您添加它的集成流中。