300.2. コンポーネントのオプションと設定
シンプル JMS バッチコンポーネントは、以下に示す 5個のオプションをサポートしています。
名前 | 説明 | デフォルト | タイプ |
---|---|---|---|
connectionFactory (advanced) | SjmsBatchComponent を有効にするには、ConnectionFactory が必要です。 | ConnectionFactory | |
asyncStartListener (advanced) | ルートの開始時に consumer メッセージリスナーを非同期で開始するかどうか。たとえば、JmsConsumer がリモート JMS ブローカーへの接続を取得できない場合は、再試行中やフェイルオーバー中にブロックされる可能性があります。これにより、ルートの開始時に Camel がブロックされます。このオプションを true に設定すると、ルートの起動を許可します。一方、JmsConsumer は非同期モードで専用のスレッドを使用して JMS ブローカーに接続します。このオプションを使用する場合は、接続を確立できない場合は例外が WARN レベルでログに記録され、コンシューマーはメッセージを受信できず、ルートを再起動して再試行できます。 | false | boolean |
recoveryInterval (advanced) | リカバリーの試行の間隔を指定します。つまり、接続が更新されるタイミング(ミリ秒単位)を指定します。デフォルトは 5000 ミリ秒、つまり 5 秒です。 | 5000 | int |
headerFilterStrategy (filter) | カスタムの org.apache.camel.spi.HeaderFilterStrategy を使用して、Camel メッセージとの間でヘッダーをフィルターします。 | HeaderFilterStrategy | |
resolveProperty Placeholders (advanced) | 起動時にコンポーネントがプロパティープレースホルダーを解決するかどうか。String タイプのプロパティーのみがプロパティープレースホルダーを使用できます。 | true | boolean |
Simple JMS Batch エンドポイントは、URI 構文を使用して設定されます。
sjms-batch:destinationName
パスおよびクエリーパラメーターを使用します。
300.2.1. パスパラメーター (1 個のパラメーター):
名前 | 説明 | デフォルト | タイプ |
---|---|---|---|
destinationName | 必須 宛先名。キューのみがサポートされており、名前の前に queue: を付けることができます。 | String |
300.2.2. クエリーパラメーター(23 個のパラメーター):
名前 | 説明 | デフォルト | タイプ |
---|---|---|---|
aggregationStrategy (consumer) | 必須 バッチ化されたすべてのメッセージを 1 つのメッセージにマージする、使用する集約ストラテジー。 | AggregationStrategy | |
allowNullBody (consumer) | ボディーのないメッセージの送信を許可するかどうか。このオプションが false でメッセージボディーが null の場合は、JMSException が出力されます。 | true | boolean |
bridgeErrorHandler (consumer) | コンシューマーの Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、コンシューマーが受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、コンシューマーは org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
completionInterval (consumer) | ミリ単位の完了間隔。これにより、間隔ごとにスケジュールされた固定レートでバッチが完了します。タイムアウトがトリガーされ、バッチにメッセージがなかった場合、バッチは空になることがあります。完了タイムアウトと完了間隔の両方を同時に使用することはできません。設定できるのは 1 つだけです。 | 1000 | int |
completionPredicate (consumer) | 完了述語。述語が true と評価された場合にバッチを完了させます。述語は、文字列構文を使用した単純な言語を使用して設定することもできます。オプション eagerCheckCompletion を true に設定して、述語が受信メッセージとマッチさせることもできます。それ以外の場合は、集約されたメッセージとマッチさせます。 | String | |
completionSize (consumer) | バッチが完了するまでに消費されるメッセージの数。 | 200 | int |
completionTimeout (consumer) | バッチが完了するときの最初の最初のメッセージの受信からのタイムアウト (ミリ秒)。タイムアウトがトリガーされ、バッチにメッセージがなかった場合、バッチは空になることがあります。完了タイムアウトと完了間隔の両方を同時に使用することはできません。設定できるのは 1 つだけです。 | 500 | int |
consumerCount (consumer) | 消費する JMS セッションの数。 | 1 | int |
eagerCheckCompletion (consumer) | 完了の先行チェックを使用します。これは、completionPredicate が受信 Exchange を使用することを意味します。完了の先行チェックなしとは対照的に、completionPredicate は集約された Exchange を使用します。 | false | boolean |
includeAllJMSXProperties (consumer) | JMS から Camel Message へのマッピング時に JMSXxxx プロパティーをすべて含めるかどうか。これを true に設定すると、JMSXAppID や JMSXUserID などのプロパティーが含まれます。注記: カスタムの headerFilterStrategy を使用している場合、このオプションは適用されません。 | false | boolean |
mapJmsMessage (consumer) | Camel が受信した JMS メッセージを適切なペイロードタイプ (javax.jms.TextMessage を文字列など) に自動マップするかどうかを指定します。詳細については、以下のマッピングの仕組みに関するセクションを参照してください。 | true | boolean |
pollDuration (consumer) | メッセージの各ポーリングの期間 (ミリ秒)。それが短く、バッチが開始されている場合は、completionTimeout が使用されます。 | 1000 | int |
sendEmptyMessageWhenIdle (consumer) | 完了タイムアウトまたは間隔を使用する場合、タイムアウトがトリガーされ、バッチにメッセージがなかった場合、バッチが空になることがあります。このオプションが true で、バッチが空の場合、空のメッセージがバッチに追加されるため、空のメッセージがルーティングされます。 | false | boolean |
exceptionHandler (consumer) | コンシューマーによるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、コンシューマーは例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
exchangePattern (consumer) | コンシューマーがエクスチェンジを作成する際に交換パターンを設定します。 | ExchangePattern | |
asyncStartListener (advanced) | ルートの開始時に consumer メッセージリスナーを非同期で開始するかどうか。たとえば、JmsConsumer がリモート JMS ブローカーへの接続を取得できない場合は、再試行中やフェイルオーバー中にブロックされる可能性があります。これにより、ルートの開始時に Camel がブロックされます。このオプションを true に設定すると、ルートの起動を許可します。一方、JmsConsumer は非同期モードで専用のスレッドを使用して JMS ブローカーに接続します。このオプションを使用する場合は、接続を確立できない場合は例外が WARN レベルでログに記録され、コンシューマーはメッセージを受信できず、ルートを再起動して再試行できます。 | false | boolean |
headerFilterStrategy (advanced) | カスタムの HeaderFilterStrategy を使用して、Camel メッセージとの間でヘッダーをフィルタリングします。 | HeaderFilterStrategy | |
jmsKeyFormatStrategy (advanced) | JMS 仕様に準拠できるように、JMS キーをエンコードおよびデコードするためのプラグ可能な戦略。Camel は、追加設定なしで、default と passthrough の 2 つの実装を提供します。デフォルトのストラテジーでは、ドットとハイフン(. および -)を安全にマーシャリングします。パススルー戦略では、キーはそのまま残ります。JMS ヘッダーキーに不正な文字が含まれているかどうかは問題にならない JMS ブローカーに使用できます。org.apache.camel.component.jms.JmsKeyFormatStrategy の独自の実装を提供し、表記を使用して参照できます。 | JmsKeyFormatStrategy | |
keepAliveDelay (advanced) | 有効なセッションを再確立する試行間の遅延 (ミリ秒)。これが正の値の場合、メッセージの消費中に IllegalStateException が発生すると、SjmsBatchConsumer は新しいセッションの作成を試みます。この遅延値を使用すると、ログのスパムを防ぐために試行間で一時停止できます。これが負の値 (デフォルトは -1) の場合、SjmsBatchConsumer は以前と同じように動作します。つまり、IllegalStateException が検出された場合は、ベイルアウトし、ルートがシャットダウンします。 | -1 | int |
messageCreatedStrategy (advanced) | Camel が JMS メッセージを送信しているときに、Camel が javax.jms.Message オブジェクトの新しいインスタンスを作成するときに呼び出される、指定された MessageCreatedStrategy を使用します。 | MessageCreatedStrategy | |
recoveryInterval (advanced) | リカバリーの試行の間隔を指定します。つまり、接続が更新されるタイミング(ミリ秒単位)を指定します。デフォルトは 5000 ミリ秒、つまり 5 秒です。 | 5000 | int |
synchronous (advanced) | 同期処理を厳密に使用するか、Camel が非同期処理を使用できるかどうかを設定します (サポートされている場合)。 | false | boolean |
timeoutCheckerExecutor Service (advanced) | completionInterval オプションを使用すると、完了間隔をトリガーするバックグラウンドスレッドが作成されます。個々のコンシューマーへ新しいスレッドを作成するのではなく、カスタムスレッドプールを提供する場合は、このオプションを設定します。 | ScheduledExecutor Service |
completionSize
エンドポイント属性は、completionTimeout
と組み合わせて使用されます。最初の条件が満たされると、集約された Exchange
がルートに放出されます。