5.4 和 5.5 之間的更改
檔案聚合器
引入了一個基於 FileSplitter.FileMaker 的 CorrelationStrategy、ReleaseStrategy 和 MessageGroupProcessor 實現,作為一個 FileAggregator 元件。更多資訊請參閱 檔案聚合器。
MQTT v5 支援
引入了 Mqttv5PahoMessageDrivenChannelAdapter 和 Mqttv5PahoMessageHandler(包括相應的 MqttHeaderMapper),以支援 MQTT v5 協議通訊。更多資訊請參閱 MQTT v5 支援。
一般性更改
所有持久化的 MessageGroupStore 實現都提供了一個基於目標資料庫流式 API 的 streamMessagesForGroup(Object groupId) 契約。更多資訊請參閱 訊息儲存。
integrationGlobalProperties bean(如果已宣告)現在必須是 org.springframework.integration.context.IntegrationProperties 的例項,而不是 java.util.Properties,後者為向後相容而棄用。添加了 spring.integration.channels.error.requireSubscribers=true 全域性屬性,以指示全域性預設的 errorChannel 是否必須配置 requireSubscribers 選項。添加了 spring.integration.channels.error.ignoreFailures=true 全域性屬性,以指示全域性預設的 errorChannel 是否必須忽略分派錯誤並將訊息傳遞給下一個處理器。更多資訊請參閱 全域性屬性。
AbstractPollingEndpoint(源輪詢通道介面卡和輪詢消費者)將 maxMessagesPerPoll == 0 視為跳過呼叫源。以後可以透過 Control Bus 等方式更改為不同的值。更多資訊請參閱 輪詢消費者。
ConsumerEndpointFactoryBean 現在接受一個 reactiveCustomizer Function,將任何輸入通道作為響應式流源,並在底層使用 ReactiveStreamsConsumer。這在 Java DSL 中作為 ConsumerEndpointSpec.reactive() 選項,以及在訊息傳遞註解中作為 @Reactive 巢狀註解進行了介紹。更多資訊請參閱 響應式流支援。
關聯訊息處理器(Aggregator 和 Resequencer)的 groupTimeoutExpression 現在可以評估為 java.util.Date,以實現一些細粒度的排程用例。此外,BiFunction groupConditionSupplier 選項已新增到 AbstractCorrelatingMessageHandler 中,以提供針對要新增到組中的訊息的 MessageGroup 條件。更多資訊請參閱 聚合器。
MessageGroup 抽象可以附帶一個 condition,以便稍後評估以對該組做出決策。更多資訊請參閱 訊息組條件。
整合流組合
新增了 IntegrationFlows.from(IntegrationFlow) 工廠方法,允許從現有流的輸出開始當前的 IntegrationFlow。此外,IntegrationFlowDefinition 添加了 to(IntegrationFlow) 終端運算子,以在其他流的輸入通道處繼續當前流。更多資訊請參閱 整合流組合。
AMQP 更改
AmqpInboundChannelAdapter 和 AmqpInboundGateway(以及相應的 Java DSL 構建器)現在支援 org.springframework.amqp.rabbit.retry.MessageRecoverer 作為通用 RecoveryCallback 的 AMQP 特定替代方案。更多資訊請參閱 AMQP 支援。
Redis 更改
ReactiveRedisStreamMessageProducer 現在為所有 StreamReceiver.StreamReceiverOptionsBuilder 選項提供了 Setter 方法,包括一個 onErrorResume 函式。更多資訊請參閱 Redis 支援。
HTTP 更改
HttpRequestExecutingMessageHandler 不再回退到 application/x-java-serialized-object 內容型別,而是讓 RestTemplate 根據提供的 HttpMessageConverter 對請求體轉換做出最終決定。它現在還具有一個 extractResponseBody 標誌(預設為 true),用於僅返回響應體,或將整個 ResponseEntity 作為回覆訊息負載返回,而與提供的 expectedResponseType 無關。WebFluxRequestExecutingMessageHandler 也提供了相同的選項。更多資訊請參閱 HTTP 支援。
檔案/FTP/SFTP 更改
持久檔案列表過濾器現在有一個布林屬性 forRecursion。將此屬性設定為 true,還會設定 alwaysAcceptDirectories,這意味著出站閘道器上的遞迴操作(ls 和 mget)現在每次都會遍歷完整的目錄樹。這是為了解決目錄樹深處的變化未被檢測到的問題。此外,forRecursion=true 會導致檔案的完整路徑用作元資料儲存鍵;這解決了如果具有相同名稱的檔案在不同目錄中多次出現時過濾器無法正常工作的問題。重要提示:這意味著在頂層目錄下的檔案中,持久元資料儲存中的現有鍵將找不到。因此,此屬性預設為 false;這可能會在未來的版本中更改。
FileInboundChannelAdapterSpec 現在提供了一個方便的 recursive(boolean) 選項,而不再需要顯式引用 RecursiveDirectoryScanner。
remoteDirectoryExpression 現在可以在 mv 命令中使用,以提供便利。
MongoDb 更改
MongoDbMessageSourceSpec 已新增到 MongoDd Java DSL 中。update 選項現在在 MongoDbMessageSource 和 ReactiveMongoDbMessageSource 實現上都已公開。
更多資訊請參閱 MongoDb 支援。
WebSockets 更改
基於 ServerWebSocketContainer 的 WebSocket 通道介面卡現在可以在執行時註冊和移除。
更多資訊請參閱 WebSockets 支援。
JPA 更改
JpaOutboundGateway 現在支援 PersistMode.DELETE 的 Iterable 訊息負載。
更多資訊請參閱 出站通道介面卡。
閘道器更改
此前,在使用 XML 配置時,對於無引數方法,@Gateway.payloadExpression 會被忽略。存在一個潛在的破壞性更改——如果方法同時使用 @Payload 和 @Gateway(帶有不同的表示式)進行註解,之前會應用 @Payload,現在則應用 @Gateway.payloadExpression。更多資訊請參閱 使用註解和 XML 進行閘道器配置 和 呼叫無引數方法。