304.3. メッセージボディーの処理
SQL コンポーネントはメッセージボディーを java.util.Iterator
タイプのオブジェクトに変換しようとし、このイテレーターを使用してクエリーパラメーター(各クエリーパラメーターがエンドポイント URI の #
記号(または設定されたプレースホルダー)で表される)を入力します。メッセージボディーが配列またはコレクションではない場合、変換により、ボディー自体である 1 つのオブジェクトのみを繰り返すイテレーターが生成されます。
たとえば、メッセージボディーが java.util.List
のインスタンスである場合、リストの最初の項目は SQL クエリーの最初の
に置換されます。
#
batch
が true
に設定されている場合、インバウンドメッセージボディーの解釈は、パラメーターイテレーターが含まれるイテレーターの代わりに若干変わります。コンポーネントは、パラメーターイテレーターを含むイテレーターを想定します。外部イテレーターのサイズはバッチサイズを決定します。
Camel 2.16 以降では、メッセージボディーを SQL ステートメントとして使用できるようにする useMessageBodyForSql オプションを使用し、SQL パラメーターは SqlConstants.SQL_PARAMETERS キーのあるヘッダーに指定する必要があります。これにより、SQL クエリーがメッセージボディーからのものであるため、SQL コンポーネントはより動的に動作します。