5.4 および 5.5 間の変更

新規コンポーネント

ファイルアグリゲーター

FileAggregator コンポーネントとしての CorrelationStrategyReleaseStrategyMessageGroupProcessor の FileSplitter.FileMaker ベースの実装が導入されました。詳細については、ファイルアグリゲーターを参照してください。

MQTTv5 サポート

Mqttv5PahoMessageDrivenChannelAdapter および Mqttv5PahoMessageHandler (それぞれの MqttHeaderMapper を含む)は、MQTTv5 プロトコル通信をサポートするために導入されました。詳細については、MQTTv5 サポートを参照してください。

一般的な変更

すべての永続的な MessageGroupStore 実装は、ターゲットデータベースストリーミング API に基づいて streamMessagesForGroup(Object groupId) 契約を提供します。詳細については、メッセージストアを参照してください。

integrationGlobalProperties Bean(宣言されている場合)は、java.util.Properties ではなく org.springframework.integration.context.IntegrationProperties のインスタンスである必要があります。このサポートは、下位互換性のために非推奨になっています。spring.integration.channels.error.requireSubscribers=true グローバルプロパティが追加され、グローバルデフォルト errorChannel を requireSubscribers オプションで構成する必要がある(または構成しない)必要があることを示します。spring.integration.channels.error.ignoreFailures=true グローバルプロパティが追加され、グローバルデフォルト errorChannel がディスパッチエラーを無視する(または無視しない)必要があり、メッセージを次のハンドラーに渡す必要があることを示します。詳細については、グローバルプロパティを参照してください。

AbstractPollingEndpoint (ソースポーリングチャネルアダプターおよびポーリングコンシューマー)は、maxMessagesPerPoll == 0 をソースの呼び出しをスキップするものとして扱います。後で別の値に変更できます。コントロールバス経由。詳細については、ポーリングコンシューマーを参照してください。

ConsumerEndpointFactoryBean は、任意の入力チャネルへの reactiveCustomizer Function をリアクティブストリームソースとして受け入れ、そで ReactiveStreamsConsumer を使用するようになりました。これは、Java DSL の ConsumerEndpointSpec.reactive() オプションとして、およびメッセージングアノテーションの @Reactive ネストされたアノテーションとしてカバーされています。詳細については、Reactive Streams サポートを参照してください。

相関メッセージハンドラー(Aggregator および Resequencer)の groupTimeoutExpression は、いくつかのきめ細かいスケジューリングのユースケースで java.util.Date に評価できるようになりました。また、BiFunction groupConditionSupplier オプションが AbstractCorrelatingMessageHandler に追加され、グループに追加されるメッセージに対して MessageGroup 条件を提供します。詳細については、アグリゲーターを参照してください。

MessageGroup 抽象化は condition とともに提供され、後で評価してグループの決定を下すことができます。詳細については、メッセージグループの状態を参照してください。

統合フローの構成

新しい IntegrationFlows.from(IntegrationFlow) ファクトリメソッドが追加され、既存のフローの出力から現在の IntegrationFlow を開始できるようになりました。さらに、IntegrationFlowDefinition は to(IntegrationFlow) ターミナルオペレーターを追加して、他のフローの入力チャネルでカレントフローを継続します。詳細については、統合フローの構成を参照してください。

AMQP の変更

AmqpInboundChannelAdapter と AmqpInboundGateway (およびそれぞれの Java DSL ビルダー)は、汎用 RecoveryCallback の AMQP 固有の代替手段として org.springframework.amqp.rabbit.retry.MessageRecoverer をサポートするようになりました。詳細については、AMQP サポートを参照してください。

Redis の変更

ReactiveRedisStreamMessageProducer には、onErrorResume 機能を含むすべての StreamReceiver.StreamReceiverOptionsBuilder オプション用の setter があります。詳細については、Redis サポートを参照してください。

HTTP の変更

HttpRequestExecutingMessageHandler は application/x-java-serialized-object コンテンツ型にフォールバックしなくなり、提供された HttpMessageConverter に基づいて RestTemplate がリクエスト本文の変換の最終決定を下せるようになります。また、提供された expectedResponseType とは関係なく、レスポンス本文のみを返す、ResponseEntity 全体をレスポンスメッセージペイロードとして返すための extractResponseBody フラグ(デフォルトでは true)もあります。WebFluxRequestExecutingMessageHandler にも同じオプションがあります。詳細については、HTTP サポートを参照してください。

ファイル / FTP/SFTP の変更

永続ファイルリストフィルターにブールプロパティ forRecursion が追加されました。このプロパティを true に設定すると、alwaysAcceptDirectories も設定されます。これは、送信ゲートウェイ(ls および mget)での再帰操作が常にディレクトリツリー全体を毎回トラバースすることを意味します。これは、ディレクトリツリーの奥深くで変更が検出されなかった問題を解決するためです。さらに、forRecursion=true により、ファイルへのフルパスがメタデータストアキーとして使用されます。これにより、同じ名前のファイルが異なるディレクトリに複数回表示された場合にフィルターが正しく機能しなかった問題が解決されます。重要: これは、永続メタデータストア内の既存のキーが、最上位ディレクトリにあるファイルで見つからないことを意味します。このため、プロパティはデフォルトで false です。これは将来のリリースで変更される可能性があります。

FileInboundChannelAdapterSpec には、RecursiveDirectoryScanner への明示的な参照を要求する代わりに、便利な recursive(boolean) オプションが追加されました。

remoteDirectoryExpression は、便宜上 mv コマンドで使用できるようになりました。

MongoDb の変更

MongoDbMessageSourceSpec が MongoDd Java DSL に追加されました。update オプションは、MongoDbMessageSource と ReactiveMongoDbMessageSource の両方の実装で公開されるようになりました。

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

WebSockets の変更

ServerWebSocketContainer に基づく WebSocket チャネルアダプターは、実行時に登録および削除できるようになりました。

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

JPA の変更

JpaOutboundGateway は、PersistMode.DELETE の Iterable メッセージペイロードをサポートするようになりました。

詳細については、送信チャネルアダプターを参照してください。

ゲートウェイの変更

以前は、XML 構成を使用する場合、引数なしのメソッドでは @Gateway.payloadExpression が無視されていました。考えられる重大な変更が 1 つあります。メソッドに以前に @Payload と @Gateway (異なる式)でアノテーションが付けられていた場合、@Payload が適用され、現在は @Gateway.payloadExpression が適用されます。詳細については、アノテーションと XML を使用したゲートウェイ構成および引数なしのメソッドの呼び出しを参照してください。