このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring Integration 6.4.3 を使用してください!

4.2 および 4.3 間の変更

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

新規コンポーネント

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

AMQP 非同期送信ゲートウェイ

非同期送信ゲートウェイを参照してください。

MessageGroupFactory

MessageGroupStore ロジックで MessageGroup インスタンスを制御できるように、MessageGroupFactory 戦略を導入しました。SimpleMessageGroup に SimpleMessageGroupFactory 実装を追加し、GroupType.HASH_SET を標準 MessageGroupStore 実装のデフォルトファクトリとして追加しました。詳細については、メッセージストアを参照してください。

PersistentMessageGroup

lazyLoadMessageGroups が true (デフォルト)の場合、getMessageGroup() のこのインスタンスを返す永続的な MessageGroupStore インスタンスに PersistentMessageGroup (遅延負荷プロキシ)実装を追加しました。詳細については、メッセージストアを参照してください。

FTP および SFTP ストリーミング受信チャネルアダプター

各ファイルに対して InputStream を返す受信チャネルアダプターを追加し、リモートファイルをローカルファイルシステムに書き込まずに取得できるようにしました。詳細については、FTP ストリーミング受信チャネルアダプターおよび SFTP ストリーミング受信チャネルアダプターを参照してください。

StreamTransformer

StreamTransformer を追加して、InputStream ペイロードを byte[] または String に変換しました。詳細については、ストリームトランスを参照してください。

統合グラフ

IntegrationGraphController REST サービスとともに IntegrationGraphServer を追加して、Spring Integration アプリケーションの実行時モデルをグラフとして公開しました。詳細については、統合グラフを参照してください。

JDBC ロックレジストリ

データベーステーブルを介して共有される分散ロックに JdbcLockRegistry を追加しました。詳細については、JDBC ロックレジストリを参照してください。

 LockRegistryLeaderInitiator 

LockRegistry 戦略に基づいて LeaderInitiator 実装を追加しました。詳細については、リーダーシップイベントの取り扱いを参照してください。

一般的な変更

このセクションでは、バージョン 4.3 が Spring Integration にもたらした一般的な変更について説明します。

コアの変更

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

チェーン内の送信ゲートウェイ

以前は、チェーン内の発信ゲートウェイで reply-channel を指定できました。それは完全に無視されました。ゲートウェイの応答は次のチェーン要素に、またはゲートウェイが最後の要素である場合はチェーンの出力チャネルに送られます。この状態は現在検出され、許可されていません。このような構成がある場合は、reply-channel を削除してください。

非同期サービスアクティベーター

サービスアクティベーターを同期させるオプションを追加しました。詳細については、非同期サービスアクティベーターを参照してください。

メッセージングアノテーションサポートの変更

メッセージングアノテーションのサポートには、クラスレベルでの @MessageEndpoint (または他の @Component)アノテーション宣言は必要ありません。以前の動作を復元するには、spring.integration.properties の spring.integration.messagingAnnotations.require.componentAnnotation を true に設定します。詳細については、グローバルプロパティおよびアノテーションサポートを参照してください。

メールの変更

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

カスタマイズ可能なユーザーフラグ

カスタマイズ可能な userFlag (4.2.2 に追加され、メールが表示されたことを示すために使用されるフラグのカスタマイズを提供)が XML 名前空間で利用可能になりました。詳細については、Recent がサポートされていない場合の IMAP メッセージのマーク付けを参照してください。

メールメッセージマッピング

これで、メールヘッダーを含む MessageHeaders とメールコンテンツを含むペイロードを使用して、受信メールメッセージをマッピングできます。以前は、ペイロードは常に生の MimeMessage でした。詳細については、受信メールメッセージマッピングを参照してください。

JMS の変更

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

ヘッダーマッパー

DefaultJmsHeaderMapper は、toString() メソッドを呼び出して、標準の correlationId ヘッダーをメッセージプロパティとしてマップするようになりました。詳細については、JMS メッセージとの間のメッセージヘッダーのマッピングを参照してください。

非同期ゲートウェイ

JMS 送信ゲートウェイに async プロパティが追加されました。詳細については、非同期ゲートウェイを参照してください。

アグリゲーターの変更

POJO アグリゲーターが Message<?> オブジェクトのコレクションをリリースするときの動作に変更があります。これはまれですが、アプリケーションがそれを行う場合、POJO に小さな変更を加える必要があります。この IMPORTANT: SimpleMessageGroup.getMessages() メソッドは unmodifiableCollection を返しますを参照してください。詳細については注意してください。

[[tcp/udp-changes]] === TCP/UDP の変更

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

イベント

サーバー接続ファクトリが開始されると、新しい TcpConnectionServerListeningEvent が発行されます。詳細については、TCP 接続イベントを参照してください。

<int-ip:udp-outbound-channel-adapter> で destination-expression および socket-expression 属性を使用できるようになりました。詳細については、UDP アダプターを参照してください。

ストリームデシリアライザー

メッセージ全体がアセンブルされるまで最終バッファを割り当てることができないさまざまなデシリアライザは、メッセージごとにバッファを作成および破棄するのではなく、データを受信する生バッファのプールをサポートするようになりました。詳細については、TCP 接続ファクトリを参照してください。

TCP メッセージマッパー

メッセージマッパーは、オプションで、構成済みのコンテンツ型ヘッダーを設定します。詳細については、IP メッセージヘッダーを参照してください。

ファイルの変更

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

宛先ディレクトリの作成

FileWritingMessageHandler 用に生成されたファイル名は、ターゲットディレクトリ内のファイルに必要なディレクトリ構造を保存するためのサブパスを表すことができます。詳細については、ファイル名の生成を参照してください。

FileReadingMessageSource は、内部クラスの WatchService ディレクトリスキャンロジックを非表示にします。この動作を有効にするために、use-watch-service および watch-events オプションを追加しました。API に矛盾があるため、最上位の WatchServiceDirectoryScanner を廃止しました。詳細については、WatchServiceDirectoryScanner を参照してください。

バッファーサイズ

ファイルを書き込むときに、バッファサイズを指定できるようになりました。

追加とフラッシング

追加時にファイルのフラッシュを回避し、アイドル期間中に多くの戦略を使用してデータをフラッシュできるようになりました。詳細については、APPEND_NO_FLUSH 使用時のファイルのフラッシュを参照してください。

タイムスタンプを保持する

送信先のファイルの lastmodified タイムスタンプを設定するように送信チャネルアダプターを構成できるようになりました。詳細については、ファイルのタイムスタンプを参照してください。

スプリッターの変更

ファイルが完全に読み取られると、FileSplitter は FTP または SFTP セッションを自動的に閉じます。これは、送信ゲートウェイが InputStream を返す場合、または新しい FTP または SFTP ストリーミングチャネルアダプターを使用する場合に適用されます。また、FileSplitter.FileMarker を JSON String に変換する新しい markers-json オプションを導入して、ダウンストリームネットワークの相互作用を緩和しました。詳細については、ファイル分割を参照してください。

ファイルフィルター

CompositeFileListFilter の代替として ChainFileListFilter を追加しました。詳細については、ファイルを読むを参照してください。

AMQP の変更

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

コンテンツ型メッセージコンバーター

送信エンドポイントは、メッセージコンテンツ型に基づいてコンバーターを選択できるように、ContentTypeDelegatingMessageConverter で構成された RabbitTemplate をサポートするようになりました。詳細については、送信メッセージの変換を参照してください。

遅延メッセージ処理のヘッダー

Spring AMQP 1.6 は、遅延メッセージ交換 (英語) のサポートを追加します。ヘッダーマッピングは、この機能で使用されるヘッダー(amqp_delay および amqp_receivedDelay)をサポートするようになりました。

AMQP-Backed Channels

AMQP-backed チャネルは、メッセージマッピングをサポートするようになりました。詳細については、AMQP-backed メッセージチャネルを参照してください。

Redis の変更

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

[[list-push/pop-direction]] ==== リストのプッシュ / ポップ方向

以前は、キューチャネルアダプターは常に固定方向で Redis リストを使用し、左端にプッシュして右端から読み取りました。RedisQueueMessageDrivenEndpoint および RedisQueueOutboundChannelAdapter の rightPop および leftPush オプションを使用して、読み取りおよび書き込み方向をそれぞれ構成できるようになりました。詳細については、Redis キュー受信チャネルアダプターおよび Redis キュー送信チャネルアダプターを参照してください。

キュー受信ゲートウェイのデフォルトシリアライザー

受信ゲートウェイのデフォルトシリアライザーは、送信ゲートウェイとの互換性のために JdkSerializationRedisSerializer に変更されました。詳細については、Redis キュー受信ゲートウェイを参照してください。

HTTP の変更

以前は、content-type ヘッダーのない本文(POST など)が含まれるリクエストでは、本文は無視されていました。このリリースでは、RFC 2616 で推奨されているように、このようなリクエストのコンテンツ型は application/octet-stream と見なされます。詳細については、HTTP 受信コンポーネントを参照してください。

uriVariablesExpression は、デフォルトで SimpleEvaluationContext を使用するようになりました(4.3.15 以降)。詳細については、URI 変数のマッピングを参照してください。

SFTP の変更

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

ファクトリ Bean

SFTP の Jsch プロキシの構成を簡素化するために、新しいファクトリ Bean を追加しました。詳細については、JschProxyFactoryBean を参照してください。

chmod の変更

SFTP 送信ゲートウェイ(put および mput コマンド用)および SFTP 送信チャネルアダプターは、chmod 属性をサポートして、アップロード後にリモートファイルのアクセス許可を変更するようになりました。詳細については、SFTP Outbound Channel Adapter および SFTP Outbound Gateway を参照してください。

FTP の変更

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

セッションの変更

FtpSession は、基になる FTP クライアントが使用できるため、list() および listNames() メソッドの null をサポートするようになりました。これにより、remoteDirectory 式なしで FtpOutboundGateway を構成できるようになりました。remote-directory または remote-directory-expression なしで <int-ftp:inbound-channel-adapter> を構成することもできます。詳細については、FTP/FTPS アダプターを参照してください。

ルーターの変更

ErrorMessageExceptionTypeRouter は、Exception スーパークラスマッピングをサポートするようになり、複数の継承が存在する場合に同じチャネルが重複するのを防ぎます。このため、ErrorMessageExceptionTypeRouter は初期化中にマッピングクラスをロードして、ClassNotFoundException のフェイルファーストを行います。

詳細については、ルーターを参照してください。

ヘッダーマッピング

このセクションでは、バージョン 4.2 および 4.3 間のヘッダーマッピングの変更について説明します。

一般

AMQP、WS、XMPP ヘッダーマッピング(request-header-mapping や reply-header-mapping など)は、否定パターンをサポートするようになりました。詳細については、AMQP メッセージヘッダーWS メッセージヘッダーXMPP メッセージヘッダーを参照してください。

AMQP ヘッダーマッピング

以前は、標準 AMQP ヘッダーのみがデフォルトでマップされていました。ユーザー定義ヘッダーのマッピングを明示的に有効にする必要がありました。このリリースでは、すべてのヘッダーがデフォルトでマップされます。さらに、受信 amqp_deliveryMode ヘッダーはデフォルトでマップされなくなりました。詳細については、AMQP メッセージヘッダーを参照してください。

Groovy スクリプト

compile-static ヒントまたはその他の CompilerConfiguration オプションを使用して、groovy スクリプトを構成できるようになりました。詳細については、Groovy の設定を参照してください。

@InboundChannelAdapter の変更

@InboundChannelAdapter には、通常の value のエイリアス channel 属性があります。さらに、ターゲット SourcePollingChannelAdapter コンポーネントは、指定された名前(outputChannelName オプション)からレイトバインディング方式でターゲット outputChannel Bean を解決できるようになりました。詳細については、アノテーションサポートを参照してください。

XMPP の変更

XMPP チャネルアダプターは、XMPP 拡張機能(XEP)をサポートするようになりました。詳細については、XMPP 拡張を参照してください。

WireTap レイトバインディング

WireTap ChannelInterceptor は、最初のアクティブなインターセプター操作中に、後でターゲット MessageChannel に解決される channelName を受け入れることができるようになりました。詳細については、ワイヤータップを参照してください。

ChannelMessageStoreQueryProvider の変更

ChannelMessageStoreQueryProvider は、H2 データベースをサポートするようになりました。詳細については、バッキングメッセージチャネルを参照してください。

WebSocket の変更

ServerWebSocketContainer は allowedOrigins オプションを公開し、SockJsServiceOptions は suppressCors オプションを公開します。詳細については、WebSockets サポートを参照してください。