このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、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 ロックレジストリを参照してください。
LockRegistry
用 LeaderInitiator
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 サポートを参照してください。