10.11. AWS-SQS


SQS コンポーネント

Camel 2.6 以降で利用可能
sqs コンポーネントは、Amazon の SQS サービスへのメッセージの 送受信をサポートします。
前提条件
Amazon SQS を使用するには、有効な Amazon Web Services 開発者アカウントが必要です。詳細は、Amazon SQS を参照してください。

URI 形式

aws-sqs://queue-name[?options]
Copy to Clipboard Toggle word wrap
キューが存在しない場合は作成されます。URI にクエリーオプションは ?options=value&option2=value&.. の形式で追加できます。

URI オプション

Expand
名前 デフォルト値 コンテキスト 説明
amazonSQSClient null 共有 レジストリーの com.amazonaws.services.sqs.AmazonSQS への参照。
accessKey null 共有 Amazon AWS Access Key
secretKey null 共有 Amazon AWS Secret Key
amazonSQSEndpoint null 共有 AWS-SQS クライアントが操作するリージョン。Camel が AWS-SQS クライアントを作成する場合にのみ機能します。つまり、amazonSQSClient を明示的に設定した場合、この設定は効果がありません。直接作成するクライアントにこれを設定する必要があります。
attributeNames null コンシューマー
消費時に受け取る属性名のリスト。
Camel 2.17: 複数の名前はコンマで区切ることができます。
messageAttributeNames null コンシューマー
消費時に受け取るメッセージ属性名のリスト。
Camel 2.17: 複数の名前はコンマで区切ることができます。
concurrentConsumers 1 コンシューマー Camel 2.15.0 では、 複数のスレッドを使用して SQS キューをポーリングしてスループットを増やすことができます。また、これを正常に機能させるには、maxMessagesPerPoll オプションを設定する必要があります。
defaultVisibilityTimeout null 共有 com.amazonaws.services.sqs.model.CreateQueueRequest に設定される可視性のタイムアウト(秒単位)。
deleteAfterRead true コンシューマー メッセージがルートによって読み取られ、処理された後に SQS からメッセージを削除します。
deleteIfFiltered true コンシューマー Camel 2.12.2,2.13.0 エクスチェンジがフィルターを通過できない場合、DeleteMessage を SQS キューに送信するかどうか。false およびエクスチェンジがルートのアップストリームで Camel フィルターを作成しない場合は、DeleteMessage を送信しません。
maxMessagesPerPoll null コンシューマー com.amazonaws.services.sqs.model.ReceiveMessageRequest に設定できる 1 回のポーリングで受信できるメッセージの最大数。
visibilityTimeout null 共有 ReceiveMessage リクエストによって受信メッセージが取得されてから、後続の取得要求から受信したメッセージが非表示になる期間(秒単位)。これは、defaultVisibilityTimeout とは異なる場合にのみ有効です。
extendMessageVisibility false コンシューマー Camel 2.10: 有効にすると、スケジュールされたバックグラウンドタスクは SQS でのメッセージの可視性を拡張し続けます。これは、メッセージの処理に時間がかかる場合に必要です。true に設定すると、visibilityTimeout を設定する必要があります。詳細は、Amazon ドキュメント を参照してください。
maximumMessageSize null 共有 Camel 2.8: maximumMessageSize (バイト単位)で、このキューに SQS メッセージを含めることができ、com.amazonaws.services.sqs.model.SetQueueAttributesRequest で設定できます。
messageRetentionPeriod null 共有 Camel 2.8: messageRetentionPeriod (秒単位)は、com.amazonaws.services.sqs.model.SetQueueAttributesRequest に設定されるこのキューの SQS によってメッセージが保持されます。
policy null 共有 camel 2.8: com.amazonaws.services.sqs.model.SetQueueAttributesRequest に設定するこのキューのポリシー。
delaySeconds null プロデューサー Camel 2.9.3: 数秒間メッセージの送信を遅延します。
waitTimeSeconds 0 プロデューサー Camel 2.11: ReceiveMessage アクション呼び出しは応答に含めるメッセージがキューにあるまで待機する期間(秒単位(0 から 20)。
receiveMessageWaitTimeSeconds 0 共有 Camel 2.11: リクエストで WaitTimeSeconds を指定しない場合、キュー属性 ReceiveMessageWaitTimeSeconds を使用して待機時間を決定します。
queueOwnerAWSAccountId null 共有 Camel 2.12: キューを別のアカウント所有者に接続する必要がある場合は、キュー所有者の aws アカウント ID を指定します。
region
null
共有
Camel 2.12.3: サービス URL をビルドするために queueOwnerAWSAccountId で使用できるキューリージョンを指定します。
redrivePolicy
null
共有
Camel 2.15.0: DeadLetter キューにメッセージを送信するポリシーを指定します。詳細は、Amazon ドキュメント を参照してください。
proxyHost null プロデューサー クライアント定義内で使用されるプロキシーホストを指定します。
proxyPort null プロデューサー クライアント定義内で使用されるプロキシーポートを指定します。
必要な SQS コンポーネントオプション

バッチコンシューマー

このコンポーネントは、バッチコンシューマー を 実装し ます。
これにより、たとえば、このバッチに存在するメッセージの数を把握し、たとえば Aggregator はこの数のメッセージを集約できます。

使用方法

SQS プロデューサーによって設定されたメッセージヘッダー

Expand
ヘッダー タイプ 説明
CamelAwsSqsMD5OfBody 文字列 Amazon SQS メッセージの MD5 チェックサム。
CamelAwsSqsMessageId 文字列 Amazon SQS メッセージ ID。
CamelAwsSqsDelaySeconds 整数 Camel 2.11 以降、Amazon SQS メッセージが他から確認できる遅延秒数。

SQS コンシューマーによって設定されたメッセージヘッダー

Expand
ヘッダー タイプ 説明
CamelAwsSqsMD5OfBody 文字列 Amazon SQS メッセージの MD5 チェックサム。
CamelAwsSqsMessageId 文字列 Amazon SQS メッセージ ID。
CamelAwsSqsReceiptHandle 文字列 Amazon SQS メッセージ受信ハンドル。
CamelAwsSqsAttributes Map<String, String> Amazon SQS メッセージ属性。

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);
Copy to Clipboard Toggle word wrap
Camel aws-sqs コンポーネント設定でこれを参照します。
from("aws-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");

Copy to Clipboard Toggle word wrap

Dependencies

Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。
pom.xml
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap
ここで、$\{camel-version\} は実際の Camel バージョン(2.6 以降)に置き換える必要があります。

JMS スタイルのセレクター

SQS はセレクターを許可しませんが、Camel Filter EIP を使用し、適切な visibilityTimeout を設定することで、これを効果的に実行できます。SQS がメッセージをディスパッチすると、DeleteMessage を受信しない限り、別のコンシューマーにメッセージをディスパッチするまで、可視性のタイムアウトを待機します。デフォルトでは、ルートが失敗しない限り、Camel はルートの最後に DeleteMessage を常に送信します。適切なフィルターリングを行い、ルートが正常に完了する場合でも DeleteMessage を送信しないようにするには、フィルターを使用します。
from("aws-sqs://MyQueue?amazonSQSClient=#client&defaultVisibilityTimeout=5000&deleteIfFiltered=false")
.filter("${header.login} == true")
.to("mock:result");
Copy to Clipboard Toggle word wrap
上記のコードでは、エクスチェンジに適切なヘッダーがない場合は、フィルターを介して送信されず、SQS キューから削除されません。5000 ミリ秒が経過すると、メッセージは他のコンシューマーに表示されます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat