5.0 和 5.1 之間的更改

新增元件

5.1 版本中新增了以下元件

AmqpDedicatedChannelAdvice

請參閱 嚴格訊息排序

改進的函式支援

java.util.function 介面現在在框架元件中具有改進的整合支援。此外,Kotlin lambda 現在可以用於處理程式和源方法。

@LongRunningTest

提供了一個 JUnit Jupiter @LongRunningTest 條件註解,用於檢查環境或系統屬性中是否存在值為 trueRUN_LONG_INTEGRATION_TESTS 條目,以確定是否應執行或跳過測試。

請參閱 JUnit 條件

一般性變更

5.1 版本中進行了以下更改

Java DSL

IntegrationFlowContext 現在是一個介面,而 IntegrationFlowRegistrationIntegrationFlowContext 的內部介面。

引入了一個新的 logAndReply() 運算子,方便在請求-回覆配置的流結束時進行日誌記錄。這避免了與 log() 混淆,後者被視為單向的流結束元件。

整合流中任何 NamedComponent 的生成 Bean 名稱現在基於元件型別,以便於視覺化工具、日誌分析器和指標收集器更好地閱讀。

GenericHandler.handle() 現在接受 MessageHeaders 型別作為第二個引數。

排程程式異常

AbstractDispatcher 捕獲並重新丟擲的異常現在更加一致

  • 任何具有 failedMessage 屬性的 MessagingException 都將原樣重新丟擲。

  • 所有其他異常都包裝在 MessageDeliveryException 中,並設定 failedMessage 屬性。

以前

  • 任何具有 failedMessage 屬性的 MessagingException 都將原樣重新丟擲

  • 沒有 failedMessage 屬性的 MessagingException 會被包裝在 MessagingException 中,並設定 failedMessage 屬性。

  • 其他 RuntimeException 例項會原樣重新丟擲。

  • 受檢異常會包裝在 MessageDeliveryException 中,並設定 failedMessage 屬性。

全域性通道攔截器

全域性通道攔截器現在適用於動態註冊的通道,例如透過使用 Java DSL 時的 IntegrationFlowContext 或使用 beanFactory.initializeBean() 初始化的 Bean。以前,當 Bean 在應用程式上下文重新整理後建立時,攔截器不適用。

通道攔截器

當沒有收到訊息時,不再呼叫 ChannelInterceptor.postReceive();不再需要檢查 Message<?> 是否為 null。以前,該方法會被呼叫。如果您有一個依賴於以前行為的攔截器,請改為實現 afterReceiveCompleted(),因為無論是否收到訊息,都會呼叫該方法。此外,PolledAmqpChannelPolledJmsChannel 以前不會使用 null 呼叫 afterReceiveCompleted();現在會了。

ObjectToJsonTransformer

ObjectToJsonTransformer 引入了一種新的 ResultType.BYTES 模式。

有關更多資訊,請參閱 JSON 轉換器

整合流:生成的 Bean 名稱

從 5.0.5 版本開始,IntegrationFlow 中元件的生成 Bean 名稱包含流 Bean 名稱,後跟一個點,作為字首。例如,如果流 Bean 名為 flowBean,則生成的 Bean 可能名為 flowBean.generatedBean

有關更多資訊,請參閱 使用訊息流

聚合器變更

如果 groupTimeout 被評估為負值,聚合器現在會立即使組過期。只有 null 被視為不做任何操作的訊號,用於當前訊息。

引入了一個新的 popSequence 屬性,以允許(預設情況下)為輸出訊息呼叫 MessageBuilder.popSequenceDetails()。此外,AbstractAggregatingMessageGroupProcessor 現在返回 AbstractIntegrationMessageBuilder 而不是整個 Message 以進行最佳化。

有關更多資訊,請參閱 聚合器

@Publisher 註解變更

從 5.1 版本開始,您必須透過使用 @EnablePublisher 或在 <int:annotation-config> 上使用 <int:enable-publisher> 子元素來顯式啟用 @Publisher AOP 功能。此外,還添加了 proxy-target-classorder 屬性,用於調整 ProxyFactory 配置。

有關更多資訊,請參閱 使用 @Publisher 註解進行註解驅動配置

檔案變更

如果您使用 FileExistsMode.APPENDFileExistsMode.APPEND_NO_FLUSH,您可以提供一個 newFileCallback,它將在建立新檔案時被呼叫。此回撥接收新建立的檔案和觸發回撥的訊息。例如,這可以用於寫入 CSV 標頭。

FileReadingMessageSource 現在在呼叫其 start() 之前不會檢查和建立目錄。因此,如果 FileReadingMessageSource 的入站通道介面卡具有 autoStartup = false,則在應用程式啟動期間不會發生針對檔案系統的故障。

有關更多資訊,請參閱 檔案支援

AMQP 變更

我們在 DefaultAmqpHeaderMapper 中對 IDTimestamp 標頭對映進行了更改。有關更多資訊,請參閱 AMQP 訊息標頭 底部附近的註釋。

contentType 標頭現在已正確對映為一般標頭對映中的條目。有關更多資訊,請參閱 contentType 標頭

從 5.1.3 版本開始,如果在使用手動確認時發生訊息轉換異常,並且定義了錯誤通道,則有效負載是 ManualAckListenerExecutionFailedException,並帶有額外的 channeldeliveryTag 屬性。這使得錯誤流能夠確認/拒絕原始訊息。有關更多資訊,請參閱 入站訊息轉換

JDBC 變更

JDBC 入站通道介面卡和 JDBC 出站閘道器上令人困惑的 max-rows-per-poll 屬性已被棄用,取而代之的是新引入的 max-rows 屬性。

當請求訊息的有效負載是 Iterable 型別的例項時,JdbcMessageHandler 現在支援 batchUpdate 功能。

INT_CHANNEL_MESSAGE 表(用於 JdbcChannelMessageStore)的索引已最佳化。如果您在此類儲存中有大型訊息組,您可能希望更改索引。

有關更多資訊,請參閱 JDBC 支援

FTP 和 SFTP 變更

現在可以使用 RotatingServerAdvice 來輪詢多個伺服器和目錄,並使用入站通道介面卡。有關更多資訊,請參閱 入站通道介面卡:輪詢多個伺服器和目錄入站通道介面卡:輪詢多個伺服器和目錄

此外,入站介面卡 localFilenameExpression 例項可以包含 #remoteDirectory 變數,其中包含正在輪詢的遠端目錄。比較器(用於對流式介面卡獲取的檔案列表進行排序)的泛型型別已從 Comparator<AbstractFileInfo<F>> 更改為 Comparator<F>。有關更多資訊,請參閱 FTP 流式入站通道介面卡SFTP 流式入站通道介面卡

此外,入站通道介面卡的同步器現在可以提供 Comparator。這在限制檢索檔案數量時使用 maxFetchSize 時很有用。

CachingSessionFactory 有一個新屬性 testSession,當為 true 時,工廠在從快取中取出現有會話時會對其執行 test() 操作。

有關更多資訊,請參閱 SFTP 會話快取FTP 會話快取

出站閘道器 MPUT 命令現在支援帶有檔案或字串集合的訊息有效負載。有關更多資訊,請參閱 SFTP 出站閘道器FTP 出站閘道器

TCP 支援

使用 SSL 時,預設情況下啟用主機驗證,以防止使用受信任證書進行中間人攻擊。有關更多資訊,請參閱 主機驗證

此外,金鑰和信任儲存型別現在可以在 DefaultTcpSSLContextSupport 上配置。

Twitter 支援

由於 Spring Social 專案已進入 生命週期結束狀態,Spring Integration 中的 Twitter 支援已移至 Extensions 專案。有關更多資訊,請參閱 Spring Integration Social Twitter

JMS 支援

JmsSendingMessageHandler 現在提供 deliveryModeExpressiontimeToLiveExpression 選項,以在執行時確定要傳送的 JMS 訊息的相應 QoS 選項。DefaultJmsHeaderMapper 現在允許透過將相應的 setMapInboundDeliveryMode()setMapInboundExpiration() 選項設定為 true 來對映入站 JMSDeliveryModeJMSExpiration 屬性。當 JmsMessageDrivenEndpointJmsInboundGateway 停止時,關聯的監聽器容器現在已關閉;這會關閉其共享連線和任何消費者。您可以配置端點以恢復以前的行為。

有關更多資訊,請參閱JMS 支援

HTTP/WebFlux 支援

statusCodeExpression(和 Function)現在以 RequestEntity<?> 作為評估上下文的根物件提供,因此請求標頭、方法、URI 和正文可用於目標狀態碼計算。

有關更多資訊,請參閱 HTTP 支援WebFlux 支援

JMX 變更

如果物件名鍵值包含除 Java 識別符號(或句點 .)之外的任何字元,則現在會將其引用。例如 org.springframework.integration:type=MessageChannel, name="input:foo.myGroup.errors"。這會產生副作用,即以前“允許”的帶有此類字元的名稱現在將被引用。例如 org.springframework.integration:type=MessageChannel, name="input#foo.myGroup.errors"

Micrometer 支援變更

現在可以更簡單地自定義框架建立的標準 Micrometer 計量器。有關更多資訊,請參閱 Micrometer 整合

整合圖定製

現在可以透過 IntegrationGraphServer 上的 Function<NamedComponent, Map<String, Object>> additionalPropertiesCallbackIntegrationNode 新增額外屬性。有關更多資訊,請參閱 整合圖

整合全域性屬性

org.springframework.integration 類別的 DEBUG 邏輯級別開啟時,整合全域性屬性(包括預設值)現在可以列印在日誌中。有關更多資訊,請參閱 全域性屬性

@PollerreceiveTimeout

@Poller 註解現在提供了一個 receiveTimeout 選項,以方便使用。有關更多資訊,請參閱 使用 @Poller 註解

© . This site is unofficial and not affiliated with VMware.