35.5. 使用方法
35.5.1. SQS プロデューサーによって設定されるメッセージヘッダー
ヘッダー | タイプ | 説明 |
---|---|---|
|
| Amazon SQS メッセージの MD5 チェックサム。 |
|
| Amazon SQS メッセージ ID。 |
|
| Camel 2.11 以降、Amazon SQS メッセージが他のユーザーに表示される遅延秒数。 |
35.5.2. SQS コンシューマーによって設定されるメッセージヘッダー
ヘッダー | タイプ | 説明 |
---|---|---|
|
| Amazon SQS メッセージの MD5 チェックサム。 |
|
| Amazon SQS メッセージ ID。 |
|
| Amazon SQS メッセージ受信ハンドル。 |
|
| Amazon SQS メッセージ属性。 |
35.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");
35.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 設定をオーバーライドします。
35.5.5. 単一メッセージの DelayQueue VS 遅延
2.23.0 から、コンポーネントに新しいオプション delayQueue が追加されました。オプション delayQueue が true に設定されている場合、SQS キューは DelaySeconds オプションが遅延として指定された DelayQueue になります。DelayQueue の詳細については、AWS SQS のドキュメント を参照してください。考慮すべき重要な情報の 1 つは、次のとおりです。
- 標準キューの場合、キューごとの遅延設定は遡及的ではありません。設定を変更しても、すでにキューにあるメッセージの遅延には影響しません。
- FIFO キューの場合、キューごとの遅延設定は遡及的です。設定を変更すると、すでにキューにあるメッセージの遅延に影響します。
公式ドキュメントに記載されているとおりです。単一のメッセージに遅延を指定する場合は、delayQueue オプションを無視できますが、エンキューされたすべてのメッセージに固定遅延を追加する必要がある場合は、このオプションを true に設定できます。
35.5.6. SQS コンポーネントで AWS IAM 認証情報を使用する
AWS IAM クレデンシャルを使用するには、Camel アプリケーションを起動する EC2 インスタンスに関連付けられた IAM ロールがあり、適切なポリシーがアタッチされていることを最初に確認する必要があります。
この機能は、リモートインスタンスでのみ true
に設定する必要があります。さらに、IAM は AWS 固有のコンポーネントであるため、静的認証情報もローカルで使用する必要があります。
この機能を実装するには、useIAMCredentials
を true
に設定します。
ローカル環境とリモート環境に基づいてこの機能のオンとオフを切り替えるには、システム環境変数でこのクエリーパラメーターを有効にすることを検討できます。たとえば、isRemote
という名前のシステム環境変数が true
に設定されている場合、コードで useIAMCredentials
クエリーパラメーターを true
に設定できます。
この機能により、静的な認証情報が完全に不要になるわけではありませんが、AWS 環境で IAM 認証情報を使用すると、リモート環境でリフレッシュする必要がなくなり、IAM 認証情報は 6 時間ごとに自動的にリフレッシュされ、EC2のセキュリティポリシーが更新されたときにも更新されるのでより安全です。
これは AWS が認証情報を管理するために推奨する方法であるため、できるだけ頻繁に使用する必要があります。