2.1 和 2.2 之間的更改
新元件
2.2 版本增加了一些新元件。
RedisStore 入站和出站通道介面卡
Spring Integration 現在有 RedisStore 入站和出站通道介面卡,讓您可以將 Message 有效負載寫入 Redis 集合並從中讀取。欲瞭解更多資訊,請參閱 RedisStore 出站通道介面卡 和 RedisStore 入站通道介面卡。
MongoDB 入站和出站通道介面卡
Spring Integration 現在有 MongoDB 入站和出站通道介面卡,讓您可以將 Message 有效負載寫入 MongoDB 文件儲存並從中讀取。欲瞭解更多資訊,請參閱 MongoDB 出站通道介面卡 和 MongoDB 入站通道介面卡。
一般更改
本節描述了從 2.1 版本到 2.2 版本的一般更改。
為端點新增行為
為輪詢器新增 <advice-chain/> 的能力已經存在一段時間了。然而,由此新增的行為會影響整個整合流。它沒有解決為單個端點新增(例如)重試的能力。2.2 版本為許多端點引入了 <request-handler-advice-chain/>。
此外,我們為此目的添加了三個標準建議類
-
MessageHandlerRetryAdvice -
MessageHandlerCircuitBreakerAdvice -
ExpressionEvaluatingMessageHandlerAdvice
欲瞭解更多資訊,請參閱 為端點新增行為。
事務同步和偽事務
輪詢器現在可以參與 Spring 的事務同步功能。這允許同步諸如入站通道介面卡重新命名檔案等操作,具體取決於事務是提交還是回滾。
此外,當沒有“真實”事務存在時,您可以透過 PseudoTransactionManager 啟用這些功能。
欲瞭解更多資訊,請參閱 事務同步。
檔案介面卡:改進的檔案覆蓋和追加處理
使用檔案出站通道介面卡或檔案出站閘道器時,可以使用新的 mode 屬性。在 Spring Integration 2.2 之前,如果目標檔案存在,則會被替換。現在您可以指定以下選項
-
REPLACE(預設) -
APPEND -
FAIL -
IGNORE
欲瞭解更多資訊,請參閱 處理現有目標檔案。
更多出站閘道器添加了回覆超時
XML 名稱空間支援為以下出站閘道器添加了 reply-timeout 屬性
-
AMQP 出站閘道器
-
檔案出站閘道器
-
FTP 出站閘道器
-
SFTP 出站閘道器
-
WS 出站閘道器
Spring-AMQP 1.1
Spring Integration 現在使用 Spring AMQP 1.1。這使得 Spring Integration 應用程式中可以使用多種功能,包括以下內容
-
出站閘道器的固定回覆佇列
-
高可用 (HA)(映象)佇列
-
釋出者確認
-
返回的訊息
-
支援死信交換和死信佇列
JDBC 支援 - 儲存過程元件
SpEL 支援
使用 Spring Integration JDBC 介面卡的儲存過程元件時,您現在可以使用 Spring 表示式語言 (SpEL) 提供儲存過程名稱或儲存函式名稱。
這樣做可以讓您在執行時指定要呼叫的儲存過程。例如,您可以透過訊息頭提供要執行的儲存過程名稱。欲瞭解更多資訊,請參閱 儲存過程。
JDBC 支援:通道特定訊息儲存實現
我們添加了一個新的訊息通道特定訊息儲存實現,使用特定於資料庫的 SQL 查詢提供更具可伸縮性的解決方案。欲瞭解更多資訊,請參閱 支援訊息通道。
有序關閉
我們在 IntegrationMBeanExporter 中添加了一個名為 stopActiveComponents() 的方法。它允許 Spring Integration 應用程式以有序的方式關閉,禁止某些介面卡接收新的入站訊息,並等待一段時間以允許正在處理的訊息完成。
ObjectToJsonTransformer
預設情況下,ObjectToJsonTransformer 現在將 content-type 頭設定為 application/json。欲瞭解更多資訊,請參閱 轉換器。
HTTP 支援
Java HTTP 序列化不再預設啟用。以前,當在 Serializable 物件上設定 expected-response-type 時,Accept 頭未正確設定。我們更新了 SerializingHttpMessageConverter 以將 Accept 頭設定為 application/x-java-serialized-object。然而,由於這可能導致與現有應用程式不相容,我們決定不再自動將此轉換器新增到 HTTP 端點。
如果您希望使用 Java 序列化,則需要使用 message-converters 屬性(使用 XML 配置時)或使用 setMessageConverters() 方法(在 Java 中)將 SerializingHttpMessageConverter 新增到相應的端點。
或者,您可能希望考慮使用 JSON。透過在類路徑上新增 Jackson 即可啟用它。