4.1 および 4.2 間の変更
アプリケーションに影響する可能性のある重要な変更については、移行ガイド [GitHub] (英語) を参照してください。wiki [GitHub] (英語) で 2.1 に戻るすべてのバージョンの移行ガイドを見つけることができます。
新規コンポーネント
バージョン 4.2 は、多くの新しいコンポーネントを追加しました。
主要な管理 / JMX のリワーク
新しい MetricsFactory
戦略インターフェースが追加されました。この変更は、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 への一般的な変更について説明します。
ファイルの変更
これらの変更の詳細については、ファイルサポートを参照してください。
新しい行を追加する
<int-file:outbound-channel-adapter>
および <int-file:outbound-gateway>
は、append-new-line
属性をサポートするようになりました。true
に設定されている場合、メッセージが書き込まれた後、ファイルに新しい行が追加されます。デフォルトの属性値は false
です。
クラスパッケージの変更
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-expression
、confirm-ack-channel
、confirm-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
ファイルが必要になりました。
詳細については、allowUnknownKeys
:: true
に設定して、不明な(または変更された)キーを持つホストへの接続を許可しますを参照してください。
メッセージセッションコールバック
<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
のサポートを参照してください。