このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring Integration 6.4.3 を使用してください! |
送信ゲートウェイ
送信ゲートウェイは、送信アダプターと受信アダプターの組み合わせに似ています。そのロールは、メッセージを処理し、それを使用して SQL クエリを実行し、応答チャネルに送信することで結果で応答することです。デフォルトでは、次の例に示すように、メッセージペイロードとヘッダーはクエリへの入力パラメーターとして使用できます。
<int-jdbc:outbound-gateway
update="insert into mythings (id, status, name) values (:headers[id], 0, :payload[thing])"
request-channel="input" reply-channel="output" data-source="dataSource" />
上記の例の結果は、mythings
テーブルにレコードを挿入し、影響を受けた行の数を示すメッセージ(ペイロードはマップ: {UPDATED=1}
)を出力チャネルに返すことです。
更新クエリが自動生成キーの挿入である場合、keys-generated="true"
を前述の例に追加することにより、生成されたキーを応答メッセージに追加できます(一部のデータベースプラットフォームではサポートされていないため、これはデフォルトではありません)。次の例は、変更された構成を示しています。
<int-jdbc:outbound-gateway
update="insert into mythings (status, name) values (0, :payload[thing])"
request-channel="input" reply-channel="output" data-source="dataSource"
keys-generated="true"/>
次の例に示すように、更新カウントまたは生成されたキーの代わりに、選択クエリを提供して、結果(受信アダプターなど)から応答メッセージを実行および生成することもできます。
<int-jdbc:outbound-gateway
update="insert into foos (id, status, name) values (:headers[id], 0, :payload[foo])"
query="select * from foos where id=:headers[$id]"
request-channel="input" reply-channel="output" data-source="dataSource"/>
Spring Integration 2.2 以降、更新 SQL クエリは必須ではなくなりました。query
属性または query
要素を使用して、選択クエリのみを提供できるようになりました。これは、一般的なゲートウェイやペイロードエンリッチャーなどを使用してデータをアクティブに取得する必要がある場合に非常に役立ちます。次に、結果から応答メッセージが生成され(受信アダプターの動作と同様)、応答チャネルに渡されます。次の例は、query
属性を使用する方法を示しています。
<int-jdbc:outbound-gateway
query="select * from foos where id=:headers[id]"
request-channel="input"
reply-channel="output"
data-source="dataSource"/>
デフォルトでは、 |
チャネルアダプターと同様に、リクエストおよび応答用に SqlParameterSourceFactory
インスタンスを提供することもできます。デフォルトは送信アダプターの場合と同じであるため、リクエストメッセージは式のルートとして使用できます。keys-generated="true"
の場合、式のルートは生成されたキーです(1 つしかない場合はマップ、複数値の場合はマップのリスト)。
送信ゲートウェイには、DataSource
または JdbcTemplate
への参照が必要です。また、受信メッセージのクエリへのバインドを制御するために、SqlParameterSourceFactory
を挿入することもできます。
バージョン 4.2 以降、request-prepared-statement-setter
属性は request-sql-parameter-source-factory
の代替として <int-jdbc:outbound-gateway>
で使用可能です。MessagePreparedStatementSetter
Bean 参照を指定できます。これにより、実行前に、より洗練された PreparedStatement
準備が実装されます。
バージョン 6.0 以降、JdbcOutboundGateway
は、以前のように「応答なし」を意味する null
に変換する代わりに、空のリストの結果をそのまま返します。これにより、空のリストの処理がダウンストリームロジックの一部であるアプリケーションで余分な構成が発生しました。空リスト処理オプションについては、スプリッタ廃棄チャネルを参照してください。
MessagePreparedStatementSetter
の詳細については、送信チャネルアダプターを参照してください。