Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.10.11. AWS-SQS
SQS コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.6 以降で利用可能
sqs コンポーネントは、Amazon の SQS サービスへのメッセージの 送受信をサポートします。
前提条件
Amazon SQS を使用するには、有効な Amazon Web Services 開発者アカウントが必要です。詳細は、Amazon SQS を参照してください。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
aws-sqs://queue-name[?options]
aws-sqs://queue-name[?options]
キューが存在しない場合は作成されます。URI にクエリーオプションは ?options=value&option2=value&.. の形式で追加できます。
URI オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | デフォルト値 | コンテキスト | 説明 |
---|---|---|---|
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 プロデューサーによって設定されたメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ヘッダー | タイプ | 説明 |
---|---|---|
CamelAwsSqsMD5OfBody
|
文字列
|
Amazon SQS メッセージの MD5 チェックサム。 |
CamelAwsSqsMessageId
|
文字列
|
Amazon SQS メッセージ ID。 |
CamelAwsSqsDelaySeconds
|
整数
|
Camel 2.11 以降、Amazon SQS メッセージが他から確認できる遅延秒数。 |
SQS コンシューマーによって設定されたメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ヘッダー | タイプ | 説明 |
---|---|---|
CamelAwsSqsMD5OfBody
|
文字列
|
Amazon SQS メッセージの MD5 チェックサム。 |
CamelAwsSqsMessageId
|
文字列
|
Amazon SQS メッセージ ID。 |
CamelAwsSqsReceiptHandle
|
文字列
|
Amazon SQS メッセージ受信ハンドル。 |
CamelAwsSqsAttributes
|
Map<String, String>
|
Amazon SQS メッセージ属性。 |
AmazonSQS の高度な設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel アプリケーションがファイアウォールの背後で実行されている場合、または AmazonSQS インスタンス設定をより詳細に制御する必要がある場合は、独自のインスタンスを作成できます。
Camel aws-sqs コンポーネント設定でこれを参照します。
from("aws-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5") .to("mock:result");
from("aws-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
Dependencies リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。
pom.xml
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-aws</artifactId> <version>${camel-version}</version> </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
ここで、
$\{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");
from("aws-sqs://MyQueue?amazonSQSClient=#client&defaultVisibilityTimeout=5000&deleteIfFiltered=false")
.filter("${header.login} == true")
.to("mock:result");
上記のコードでは、エクスチェンジに適切なヘッダーがない場合は、フィルターを介して送信されず、SQS キューから削除されません。5000 ミリ秒が経過すると、メッセージは他のコンシューマーに表示されます。