4.1 および 4.2 間の変更

アプリケーションに影響する可能性のある重要な変更については、移行ガイド [GitHub] (英語) を参照してください。wiki [GitHub] (英語) で 2.1 に戻るすべてのバージョンの移行ガイドを見つけることができます。

新規コンポーネント

バージョン 4.2 は、多くの新しいコンポーネントを追加しました。

主要な管理 / JMX のリワーク

新しい MetricsFactory 戦略インターフェースが追加されました。この変更は、JMX および管理インフラストラクチャの他の変更とともに、管理構成および実行時パフォーマンスをはるかに制御します。

ただし、これには(一部の)ユーザー環境にとって重要な意味があります。

詳細については、指標と管理および JMX の改善を参照してください。

MongoDB メタデータストア

MongoDbMetadataStore が利用可能になりました。詳細については、MongoDB メタデータストアを参照してください。

SecuredChannel アノテーション

非推奨の ChannelSecurityInterceptorFactoryBean を置き換える @SecuredChannel アノテーションを導入しました。詳細については、Spring Integration のセキュリティを参照してください。

SecurityContext の伝播

あるメッセージフローのスレッドから別のスレッドへの SecurityContext 伝播に SecurityContextPropagationChannelInterceptor を導入しました。詳細については、Spring Integration のセキュリティを参照してください。

FileSplitter

4.1.2 では、テキストファイルを行に分割する FileSplitter を追加しました。int-file: 名前空間で完全にサポートされるようになりました。詳細については、ファイル分割を参照してください。

Zookeeper サポート

クラスター環境またはマルチホスト環境での実行を支援するために、Zookeeper サポートをフレームワークに追加しました。この変更は次の機能に影響します。

  • ZookeeperMetadataStore

  • ZookeeperLockRegistry

  • Zookeeper リーダーシップ

詳細については、Zookeeper サポートを参照してください。

スレッドバリア

新しいスレッド <int:barrier/> コンポーネントが使用可能になり、非同期イベントが発生するまでスレッドを中断できます。詳細については、スレッドバリアを参照してください。

STOMP サポート

受信および送信のチャネルアダプターペアとして、STOMP サポートをフレームワークに追加しました。詳細については、STOMP サポートを参照してください。

コーデック

オブジェクトを byte[] との間でエンコードおよびデコードするために、新しい Codec 抽象化が導入されました。Kryo を使用する実装を追加しました。コーデックベースのトランスフォーマーとメッセージコンバーターも追加しました。詳細については、コーデックを参照してください。

メッセージ PreparedStatement Setter

SqlParameterSourceFactory を使用して requestMessage コンテキストを使用して PreparedStatement のパラメーターを設定する代わりに、JdbcMessageHandler (<int-jdbc:outbound-gateway> および <int-jdbc:outbound-channel-adapter>)の新しい MessagePreparedStatementSetter 関数インターフェースコールバックを使用できます。詳細については、送信チャネルアダプターを参照してください。

一般的な変更

このセクションでは、バージョン 4.1 からバージョン 4.2 への一般的な変更について説明します。

WireTap

既存の selector 属性の代替として、<wire-tap/> 要素は selector-expression 属性をサポートするようになりました。

ファイルの変更

これらの変更の詳細については、ファイルサポートを参照してください。

新しい行を追加する

<int-file:outbound-channel-adapter> および <int-file:outbound-gateway> は、append-new-line 属性をサポートするようになりました。true に設定されている場合、メッセージが書き込まれた後、ファイルに新しい行が追加されます。デフォルトの属性値は false です。

隠しファイルを無視する

<int-file:inbound-channel-adapter> に ignore-hidden 属性を追加して、ソースディレクトリから隠しファイルを取得するかどうかを設定できるようにしました。デフォルトは true です。

InputStream ペイロードの作成

FileWritingMessageHandler は、有効なメッセージペイロード型として InputStream も受け入れます。

HeadDirectoryScanner

HeadDirectoryScanner を他の FileListFilter 実装で使用できるようになりました。

最終変更フィルター

LastModifiedFileListFilter を追加しました。

サービスディレクトリスキャナーを見る

WatchServiceDirectoryScanner を追加しました。

永続的なファイルリストフィルターの変更

AbstractPersistentFileListFilter には新しいプロパティ(flushOnUpdate)があり、true に設定すると、Flushable (たとえば PropertiesPersistingMetadataStore)を実装している場合、メタデータストアで flush() を呼び出します。

クラスパッケージの変更

ScatterGatherHandler クラスを org.springframework.integration.handler から org.springframework.integration.scattergather に移動しました。

TCP の変更

このセクションでは、Spring Integration TCP 機能の一般的な変更について説明します。

TCP シリアライザー

TCP Serializers は flush() ではなく OutputStream でした。これは、現在 TcpNxxConnection クラスによって行われています。コード内で直接シリアライザーを使用する場合、flush()  OutputStream が必要になる場合があります。

サーバーソケットの例外

TCP サーバーソケットで予期しない例外が発生するたびに TcpConnectionServerExceptionEvent インスタンスが発行されるようになりました(4.1.3 および 4.0.7 にも追加されています)。詳細については、TCP 接続イベントを参照してください。

TCP サーバーポート

ランダムポートでリッスンするように TCP サーバーソケットファクトリを構成する場合、getPort() を使用して、OS によって選択された実際のポートを取得できるようになりました。getServerSocketAddress() も利用できます。

詳細については、"TCP 接続ファクトリ" を参照してください。

TCP ゲートウェイリモートタイムアウト

TcpOutboundGateway は、既存の remote-timeout 属性の代替として remote-timeout-expression をサポートするようになりました。これにより、各メッセージに基づいてタイムアウトを設定できます。

また、remote-timeout は、reply-timeout と同じ値にデフォルト設定されなくなりました。これは、まったく異なる意味を持っています。

詳細については、.TCP 送信ゲートウェイ属性を参照してください。

ヘッダーマッピングに使用可能な TCP SSLSession

TcpConnection 実装は getSslSession() をサポートするようになり、セッションから情報を抽出してメッセージヘッダーに追加できるようになりました。詳細については、IP メッセージヘッダーを参照してください。

TCP イベント

存在しないソケットへのメッセージの送信など、相関例外が発生するたびに新しいイベントが発行されるようになりました。

TcpConnectionEventListeningMessageProducer は非推奨です。代わりに汎用イベントアダプターを使用してください。

詳細については、TCP 接続イベントを参照してください。

@InboundChannelAdapter の変更

以前は、受信チャネルアダプターの @Poller は、maxMessagesPerPoll 属性を -1 (無限大)にデフォルト設定していました。これは、1 にデフォルト設定されている <inbound-channel-adapter/> の XML 構成と矛盾していました。アノテーションでは、この属性のデフォルトが 1 になりました。

API 変更

o.s.integration.util.FunctionIterator では、reactor.function.Function ではなく o.s.integration.util.Function が必要になりました。これは、Reactor への不要なハード依存性を削除するために行われました。このイテレータを使用する場合は、インポートを変更する必要があります。

Reactor は、Promise ゲートウェイなどの機能で引き続きサポートされています。依存関係は、それを必要としないユーザーのために削除されました。

JMS の変更

このセクションでは、Spring Integration TCP 機能の一般的な変更について説明します。

応答リスナーの遅延初期化

JMS 送信ゲートウェイの応答リスナーを、ゲートウェイのライフサイクルによって制御されるのではなく、オンデマンドで初期化され、アイドル期間後に停止するように構成できるようになりました。詳細については、送信ゲートウェイを参照してください。

メッセージ駆動型エンドポイントでの変換エラー

error-channel は、変換エラーに使用されるようになりました。以前のバージョンでは、トランザクションのロールバックとメッセージの再配信が発生していました。

詳細については、メッセージ駆動型チャネルアダプターおよび受信ゲートウェイを参照してください。

デフォルトの確認モード

暗黙的に定義された DefaultMessageListenerContainer を使用する場合、デフォルトの acknowledge は transacted になりました。メッセージの損失を防ぐため、このコンテナーを使用する場合は transacted を使用することをお勧めします。このデフォルトは、メッセージ駆動型の受信アダプターと受信ゲートウェイに適用されるようになりました。これは、すでに JMS でサポートされているチャネルのデフォルトでした。

詳細については、メッセージ駆動型チャネルアダプターおよび受信ゲートウェイを参照してください。

共有サブスクリプション

共有サブスクリプション(JMS 2.0)のネームスペースサポートをメッセージ駆動型エンドポイントと <int-jms:publish-subscribe-channel> に追加しました。以前は、共有接続を使用するには、リスナーコンテナーを <bean/> 宣言として関連付ける必要がありました。

詳細については、JMS サポートを参照してください。

条件付きポーラー

動的ポーリングの柔軟性が大幅に向上しました。

詳細については、メッセージソースの条件付きポーラーを参照してください。

AMQP の変更

このセクションでは、Spring Integration AMQP 機能の一般的な変更について説明します。

パブリッシャーの確認

<int-amqp:outbound-gateway> は、confirm-correlation-expressionconfirm-ack-channelconfirm-nack-channel 属性(<int-amqp:outbound-channel-adapter> と同様の目的を持つ)をサポートするようになりました。

相関データ

送信チャネルアダプターと受信ゲートウェイの両方で、相関データが Message<?> である場合、ack または nack チャネルのメッセージの基礎になり、追加のヘッダーが追加されます。以前は、相関データ(Message<?> を含む)は ack または nack メッセージのペイロードとして返されていました。

受信ゲートウェイのプロパティ

<int-amqp:inbound-gateway> は、amqp-template 属性を公開して、応答 RabbitTemplate の外部 Bean をさらに制御できるようにします。独自の AmqpTemplate 実装を提供することもできます。さらに、リクエストメッセージに replyTo プロパティがない場合は、default-reply-to を使用できます。

詳細については、AMQP サポートを参照してください。

XPath Splitter の改善

XPathMessageSplitter (<int-xml:xpath-splitter>)は、内部 javax.xml.transform.Transformer の output-properties の構成を可能にし、XPath 評価 org.w3c.dom.NodeList の結果の Iterator モード(デフォルトは true)をサポートします。

詳細については、XML メッセージの分割を参照してください。

HTTP の変更

このセクションでは、Spring Integration HTTP 機能に対する一般的な変更について説明します。

CORS

HTTP 受信エンドポイント(<int-http:inbound-channel-adapter> および <int-http:inbound-gateway>)では、クロスオリジンリソースシェアリング(CORS)の構成が可能になりました。

詳細については、クロスオリジンリソースシェアリング(CORS)サポートを参照してください。

受信ゲートウェイのタイムアウト

HTTP 受信ゲート方法を設定して、リクエストがタイムアウトしたときに指定したステータスコードを返すことができます。デフォルトは 200 OK ではなく 500 Internal Server Error になりました。

詳細については、レスポンス状態コードを参照してください。

フォームデータ

multipart/form-data リクエストをプロキシするためのドキュメントを追加しました。詳細については、HTTP サポートを参照してください。

ゲートウェイの変更

このセクションでは、Spring Integration ゲートウェイ機能の一般的な変更について説明します。

[[gateway-methods-can-return-completablefuture<?>]] ==== ゲートウェイメソッドは CompletableFuture<?> を返すことができます

Java 8 を使用する場合、ゲートウェイメソッドは CompletableFuture<?> を返すことができるようになりました。詳細については、CompletableFuture を参照してください。

MessagingGateway アノテーション

リクエストと応答のタイムアウトプロパティは、プロパティプレースホルダーまたは SpEL で構成できるように、Long ではなく String になりました。@MessagingGateway アノテーションを参照してください。

アグリゲーターの変更

このセクションでは、Spring Integration アグリゲーター機能の一般的な変更について説明します。

アグリゲーターのパフォーマンス

このリリースには、リリース時にグループからメッセージをより効率的に削除することにより、コンポーネント(アグリゲーター、リシーケンサーなど)を集約するためのパフォーマンスの改善が含まれています。新しいメソッド(removeMessagesFromGroup)がメッセージストアに追加されました。removeBatchSize プロパティ(デフォルト: 100)を設定して、各操作で削除されるメッセージの数を調整します。現在、JDBC、Redis、MongoDB メッセージストアはこのプロパティをサポートしています。

出力メッセージグループプロセッサー

アグリゲーターに ref または内部 Bean を使用する場合、MessageGroupProcessor を直接バインドできるようになりました。さらに、グループ内のメッセージのコレクションを返す SimpleMessageGroupProcessor を追加しました。出力プロセッサーが Message<?> のコレクションを生成すると、アグリゲーターはそれらのメッセージを個別に解放します。SimpleMessageGroupProcessor を構成すると、アグリゲーターがメッセージバリアになり、メッセージはすべて到着するまで保留され、その後個別に解放されます。詳細については、アグリゲーターを参照してください。

FTP および SFTP の変更

このセクションでは、Spring Integration FTP および SFTP 機能の一般的な変更について説明します。

受信チャネルアダプター

これで、受信チャネルアダプターで remote-directory-expression を指定して、実行時にディレクトリを決定できます。詳細については、FTP/FTPS アダプターおよび SFTP アダプターを参照してください。

ゲートウェイの部分的な結果

FTP または SFTP 送信ゲートウェイを使用して複数のファイル(mget および mput を使用)を操作する場合、リクエストの一部が完了した後に例外が発生する可能性があります。そのような状態が発生すると、部分的な結果を含む PartialSuccessException がスローされます。詳細については、FTP 送信ゲートウェイおよび SFTP 送信ゲートウェイを参照してください。

セッションファクトリの委譲

委譲セッションファクトリを追加し、スレッドコンテキスト値に基づいて特定のセッションファクトリを選択できるようにしました。

詳細については、セッションファクトリの委譲およびセッションファクトリの委譲を参照してください。

デフォルトの Sftp セッションファクトリ

以前は、DefaultSftpSessionFactory は無条件で未知のホストへの接続を許可していました。これは現在構成可能です(デフォルト: false)。

allowUnknownKeys プロパティが true (デフォルト: false)でない限り、ファクトリには構成済みの knownHosts ファイルが必要になりました。

メッセージセッションコールバック

<int-(s)ftp:outbound-gateway/> 内の requestMessage コンテキストでカスタム Session 操作を実行するために MessageSessionCallback<F, T> を導入しました。

詳細については、MessageSessionCallback を使用するおよび MessageSessionCallback を参照してください。

Websocket の変更

ServerWebSocketContainer に WebSocketHandlerDecoratorFactory サポートを追加して、内部 WebSocketHandler の連鎖カスタマイズを可能にしました。詳細については、WebSockets 名前空間のサポートを参照してください。

アプリケーションイベントアダプターの変更

ApplicationEvent アダプターは、payload で event として動作できるようになり、カスタム ApplicationEvent 拡張機能を直接省略できるようになりました。この目的のために、publish-payload ブール属性が <int-event:outbound-channel-adapter> に導入されました。詳細については、Spring ApplicationEvent のサポートを参照してください。