2.1 および 2.2 間の変更
アプリケーションに影響する可能性のある重要な変更については、移行ガイド [GitHub] (英語) を参照してください。wiki [GitHub] (英語) で 2.1 に戻るすべてのバージョンの移行ガイドを見つけることができます。
新規コンポーネント
バージョン 2.2 は、多くの新しいコンポーネントを追加しました。
RedisStore
受信および送信チャネルアダプター
Spring Integration に RedisStore
受信および送信チャネルアダプターが追加され、Redis コレクションとの間で Message
ペイロードを読み書きできるようになりました。詳細については、RedisStore 送信チャネルアダプターおよび Redis ストア受信チャネルアダプターを参照してください。
MongoDB 受信および送信チャネルアダプター
Spring Integration には MongoDB 受信および送信チャネルアダプターがあり、MongoDB ドキュメントストアとの間で Message
ペイロードを読み書きできるようになりました。詳細については、MongoDB 送信チャネルアダプターおよび MongoDB 受信チャネルアダプターを参照してください。
JPA エンドポイント
Spring Integration には、JPA エンティティオブジェクトを取得および永続化する Java Persistence API(JPA)のコンポーネントが含まれるようになりました。JPA アダプターには、次のコンポーネントが含まれています。
詳しくは、JPA サポートを参照してください。
一般的な変更
このセクションでは、バージョン 2.1 からバージョン 2.2 への一般的な変更について説明します。
エンドポイントへの動作の追加
<advice-chain/>
をポーラーに追加する機能はしばらくの間利用可能です。ただし、これによって追加される動作は、統合フロー全体に影響します。個々のエンドポイントに(たとえば)再試行を追加する機能については言及していません。2.2 リリースは、多くのエンドポイントに <request-handler-advice-chain/>
を導入しました。
さらに、この目的のために 3 つの標準アドバイスクラスを追加しました。
MessageHandlerRetryAdvice
MessageHandlerCircuitBreakerAdvice
ExpressionEvaluatingMessageHandlerAdvice
詳しくは、エンドポイントへの動作の追加を参照してください。
トランザクションの同期と疑似トランザクション
ポーラーは、Spring のトランザクション同期機能に参加できるようになりました。これにより、トランザクションがコミットするかロールバックするかに応じて、受信チャネルアダプターによるファイル名の変更などの操作を同期できます。
さらに、PseudoTransactionManager
を使用して、「実際の」トランザクションが存在しないときにこれらの機能を有効にできます。
詳しくは、トランザクションの同期を参照してください。
ファイルアダプター: ファイルの上書きと追加処理の改善
ファイル送信チャネルアダプターまたはファイル送信ゲートウェイを使用する場合、新しい mode
プロパティを使用できます。Spring Integration 2.2 より前のバージョンでは、ターゲットファイルが存在する場合、それらが置き換えられました。これで、次のオプションを指定できます。
REPLACE
(default)APPEND
FAIL
IGNORE
詳しくは、既存の宛先ファイルの処理を参照してください。
より多くの送信ゲートウェイに追加された返信タイムアウト
XML 名前空間のサポートにより、reply-timeout 属性が次の送信ゲートウェイに追加されます。
AMQP 送信ゲートウェイ
ファイル送信ゲートウェイ
FTP 送信ゲートウェイ
SFTP 送信ゲートウェイ
WS 送信ゲートウェイ
Spring-AMQP 1.1
Spring Integration は Spring AMQP 1.1 を使用するようになりました。これにより、Spring Integration アプリケーション内で次のようないくつかの機能を使用できます。
送信ゲートウェイの固定応答キュー
HA(ミラー化された)キュー
パブリッシャーの確認
返されたメッセージ
デッドレター交換およびデッドレターキューのサポート
JDBC サポート - ストアドプロシージャのコンポーネント
SpEL サポート
Spring Integration JDBC Adapter のストアドプロシージャコンポーネントを使用する場合、Spring Expression Language(SpEL)を使用して、ストアドプロシージャ名またはストアド関数名を提供できるようになりました。
これにより、実行時に呼び出されるストアドプロシージャを指定できます。例: メッセージヘッダーを介して実行するストアドプロシージャ名を指定できます。詳細については、ストアドプロシージャーを参照してください。
JDBC サポート: 送信ゲートウェイ
JDBC 送信ゲートウェイを使用する場合、更新クエリは必須ではなくなりました。リクエストメッセージをパラメーターのソースとして使用して、選択クエリのみを提供できるようになりました。
JDBC サポート: チャネル固有のメッセージストアの実装
新しいメッセージチャネル固有のメッセージストア実装を追加し、データベース固有の SQL クエリを使用したよりスケーラブルなソリューションを提供しました。詳細については、バッキングメッセージチャネルを参照してください。
正常なシャットダウン
stopActiveComponents()
というメソッドを IntegrationMBeanExporter
に追加しました。これにより、Spring Integration アプリケーションを正常にシャットダウンし、特定のアダプターへの新しい受信メッセージを許可せず、飛行中のメッセージが完了するまでしばらく待つことができます。
JMS 送信ゲートウェイの改善
これで、MessageListener
コンテナーを使用して応答を受信するように JMS 送信ゲートウェイを構成できます。そうすることで、ゲートウェイのパフォーマンスを改善できます。
ObjectToJsonTransformer
デフォルトでは、ObjectToJsonTransformer
は content-type
ヘッダーを application/json
に設定するようになりました。詳細については、Transformer を参照してください。
HTTP サポート
HTTP を介した Java 直列化は、デフォルトでは無効になっています。以前は、Serializable
オブジェクトに expected-response-type
を設定するときに、Accept
ヘッダーが正しく設定されていませんでした。SerializingHttpMessageConverter
を更新して、Accept
ヘッダーを application/x-java-serialized-object
に設定しました。ただし、これにより既存のアプリケーションとの非互換性が生じる可能性があるため、このコンバーターを HTTP エンドポイントに自動的に追加しないことにしました。
Java 直列化を使用する場合は、message-converters
属性(XML 構成を使用する場合)または setMessageConverters()
メソッド(Java)を使用して、SerializingHttpMessageConverter
を適切なエンドポイントに追加する必要があります。
または、代わりに JSON の使用を検討することもできます。クラスパスに Jackson
を置くことで有効になります。