搜索

36.5. 使用方法

download PDF

36.5.1. SQS producer 设置的消息标头

标头类型描述

CamelAwsSqsMD5OfBody

字符串

Amazon SQS 消息的 MD5 checksum。

CamelAwsSqsMessageId

字符串

Amazon SQS 消息 ID。

CamelAwsSqsDelaySeconds

整数

Camel 2.11 起,Amazon SQS 消息可以看到的延迟秒数。

36.5.2. SQS consumer 设置的消息标头

标头类型描述

CamelAwsSqsMD5OfBody

字符串

Amazon SQS 消息的 MD5 checksum。

CamelAwsSqsMessageId

字符串

Amazon SQS 消息 ID。

CamelAwsSqsReceiptHandle

字符串

Amazon SQS 消息接收句柄。

CamelAwsSqsMessageAttributes

Map<String, String>

Amazon SQS 消息属性。

36.5.3. 高级 AmazonSQS 配置

如果您的 Camel 应用程序在防火墙后面运行,或者您需要对 AmazonSQS 实例配置拥有更多控制,您可以创建自己的实例:

AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");

ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);

AmazonSQS client = new AmazonSQSClient(awsCredentials, clientConfiguration);

registry.bind("client", client);

并在 Camel aws-sqs 组件配置中引用它:

from("aws-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");

36.5.4. 创建或更新 SQS 队列

在 SQS 组件中,当端点启动时,会执行检查来获取与队列存在的信息。您可以使用 SQSConfiguration 选项通过 QueueAttributeName 映射自定义创建。

from("aws-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");

在本例中,如果 AWS 上尚未创建 MyQueue 队列,它将使用 SQS 配置中的默认参数创建。如果已在 AWS 上启动,则使用 SQS 配置选项来覆盖现有的 AWS 配置。

36.5.5. DelayQueue VS Delay for Single 消息

从 2.23.0,组件具有一个新的选项:delayQueue。当选项设为 true 时,SQS Queue 将是一个 DelayQueue,带有 DelaySeconds 选项作为延迟。有关 DelayQueue 的更多信息,您可以阅读 AWS SQS 文档。要考虑的一个重要信息是:

  • 对于标准队列,每个队列延迟设置不会重新修改设置不会影响队列中已存在的消息的延迟。
  • 对于 FIFO 队列,每个队列延迟设置正在重新修改设置,会影响队列中已存在的消息延迟。

如官方文档中所述。如果要在单个消息上指定延迟,您可以忽略 delayQueue 选项,但如果您需要向所有消息添加固定延迟,则可以将此选项设置为 true。

36.5.6. 在 SQS 组件中使用 AWS IAM 凭证

要使用 AWS IAM 凭证,您必须首先确认启动 Camel 应用程序的 EC2 实例具有与其关联的 IAM 角色,并附加适当的策略。

此功能应只在远程实例上设置为 true。另外,还必须在本地使用静态凭证,因为 IAM 是 AWS 特定组件。

要实现此功能,请将IAMCredentials 设置为 true

注意

要根据本地和远程环境打开和关闭此功能,您可以考虑使用系统环境变量启用此查询参数。例如,如果名为 isRemote 的系统环境变量设为 true,您的代码可能会将 useIAMCredentials query 参数设置为 true

虽然此功能不会完全消除对静态凭证的需求,但在 AWS 环境中使用 IAM 凭证不再需要刷新远程环境,并更安全,因为 IAM 凭证每 6 小时自动刷新,并在更新 EC2 安全策略时进行更新。

这是 AWS 推荐的管理凭证的方法,因此应尽可能使用。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.