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