4.2 和 4.3 之間的更改
新元件
4.3 版本新增了一些元件。
AMQP 異步出站閘道器
請參閱 異步出站閘道器。
MessageGroupFactory
我們引入了 MessageGroupFactory 策略,以允許控制 MessageGroupStore 邏輯中的 MessageGroup 例項。我們為 SimpleMessageGroup 添加了 SimpleMessageGroupFactory 實現,其中 GroupType.HASH_SET 是標準 MessageGroupStore 實現的預設工廠。有關更多資訊,請參閱 訊息儲存。
PersistentMessageGroup
我們為永續性 MessageGroupStore 例項添加了 PersistentMessageGroup(延遲載入代理)實現,當它們的 lazyLoadMessageGroups 為 true(預設值)時,它會為 getMessageGroup() 返回此例項。有關更多資訊,請參閱 訊息儲存。
FTP 和 SFTP 流式入站通道介面卡
我們新增了入站通道介面卡,它為每個檔案返回一個 InputStream,允許您在不將遠端檔案寫入本地檔案系統的情況下檢索它們。有關更多資訊,請參閱 FTP 流式入站通道介面卡 和 SFTP 流式入站通道介面卡。
StreamTransformer
我們添加了 StreamTransformer,用於將 InputStream 有效負載轉換為 byte[] 或 String。有關更多資訊,請參閱 流轉換器。
整合圖
我們新增了 IntegrationGraphServer,以及 IntegrationGraphController REST 服務,用於將 Spring Integration 應用程式的執行時模型公開為圖。有關更多資訊,請參閱 整合圖。
JDBC 鎖登錄檔
我們新增了 JdbcLockRegistry,用於透過資料庫表共享分散式鎖。有關更多資訊,請參閱 JDBC 鎖登錄檔。
LockRegistry 的 LeaderInitiator
我們添加了基於 LockRegistry 策略的 LeaderInitiator 實現。有關更多資訊,請參閱 領導力事件處理。
一般變更
本節描述了 4.3 版本對 Spring Integration 帶來的一般變更。
核心變更
本節描述了 Spring Integration 核心的一般變更。
鏈中的出站閘道器
以前,您可以在鏈中的出站閘道器上指定 reply-channel。它會被完全忽略。閘道器的回覆會發送到下一個鏈元素,或者,如果閘道器是最後一個元素,則傳送到鏈的輸出通道。現在,此情況會被檢測到並禁止。如果您有此配置,請刪除 reply-channel。
非同步服務啟用器
我們新增了一個選項,使服務啟用器可以同步。有關更多資訊,請參閱 非同步服務啟用器。
郵件變更
本節描述了 Spring Integration 郵件功能的一般變更。
可定製的使用者標記
現在,可定製的 userFlag(在 4.2.2 中新增,用於自定義表示郵件已讀的標記)在 XML 名稱空間中可用。有關更多資訊,請參閱 當不支援 Recent 時標記 IMAP 訊息。
郵件訊息對映
您現在可以使用包含郵件頭的 MessageHeaders 和包含電子郵件內容的有效負載來對映入站郵件訊息。以前,有效負載始終是原始的 MimeMessage。有關更多資訊,請參閱 入站郵件訊息對映。
JMS 變更
本節描述了 Spring Integration JMS 功能的一般變更。
頭對映器
DefaultJmsHeaderMapper 現在透過呼叫其 toString() 方法將標準 correlationId 頭對映為訊息屬性。有關更多資訊,請參閱 將訊息頭對映到 JMS 訊息和從 JMS 訊息對映。
非同步閘道器
JMS 出站閘道器現在具有 async 屬性。有關更多資訊,請參閱 非同步閘道器。
聚合器變更
當 POJO 聚合器釋放 Message<?> 物件的集合時,行為發生了變化。這種情況很少見,但如果您的應用程式這樣做,您需要對 POJO 進行一些小改動。有關更多資訊,請參閱此 重要:SimpleMessageGroup.getMessages() 方法返回一個 unmodifiableCollection。 注意。
[[tcp/udp-changes]] === TCP/UDP 變更
本節描述了 Spring Integration TCP/UDP 功能的一般變更。
事件
當伺服器連線工廠啟動時,會發出一個新的 TcpConnectionServerListeningEvent。有關更多資訊,請參閱 TCP 連線事件。
您現在可以在 <int-ip:udp-outbound-channel-adapter> 上使用 destination-expression 和 socket-expression 屬性。有關更多資訊,請參閱 UDP 介面卡。
流反序列化器
各種直到整個訊息組裝完畢才能分配最終緩衝區的反序列化器現在支援將接收資料的原始緩衝區進行池化,而不是為每個訊息建立和丟棄緩衝區。有關更多資訊,請參閱 TCP 連線工廠。
TCP 訊息對映器
訊息對映器現在可以選擇設定配置的內容型別頭。有關更多資訊,請參閱 IP 訊息頭。
檔案變更
本節描述了 Spring Integration 檔案功能的一般變更。
目標目錄建立
FileWritingMessageHandler 生成的檔名可以表示子路徑,以在目標目錄中儲存檔案的所需目錄結構。有關更多資訊,請參閱 生成檔名。
FileReadingMessageSource 現在將 WatchService 目錄掃描邏輯隱藏在內部類中。我們添加了 use-watch-service 和 watch-events 選項以啟用此行為。由於 API 周圍的不一致性,我們廢棄了頂層 WatchServiceDirectoryScanner。有關更多資訊,請參閱 WatchServiceDirectoryScanner。
追加和重新整理
您現在可以避免在追加時重新整理檔案,並使用多種策略在空閒期間重新整理資料。有關更多資訊,請參閱 使用 APPEND_NO_FLUSH 時重新整理檔案。
保留時間戳
您現在可以將出站通道介面卡配置為設定目標檔案的 lastmodified 時間戳。有關更多資訊,請參閱 檔案時間戳。
拆分器變更
當檔案完全讀取後,FileSplitter 現在會自動關閉 FTP 或 SFTP 會話。這適用於出站閘道器返回 InputStream 或您使用新的 FTP 或 SFTP 流式通道介面卡的情況。我們還引入了一個新的 markers-json 選項,用於將 FileSplitter.FileMarker 轉換為 JSON String,以實現寬鬆的下游網路互動。有關更多資訊,請參閱 檔案拆分器。
檔案過濾器
我們添加了 ChainFileListFilter 作為 CompositeFileListFilter 的替代方案。有關更多資訊,請參閱 讀取檔案。
AMQP 變更
本節描述了 Spring Integration AMQP 功能的一般變更。
內容型別訊息轉換器
出站端點現在支援配置了 ContentTypeDelegatingMessageConverter 的 RabbitTemplate,這樣您可以根據訊息內容型別選擇轉換器。有關更多資訊,請參閱 出站訊息轉換。
延遲訊息處理的頭
Spring AMQP 1.6 增加了對 延遲訊息交換 的支援。頭對映現在支援此功能使用的頭(amqp_delay 和 amqp_receivedDelay)。
AMQP 支援的通道
AMQP 支援的通道現在支援訊息對映。有關更多資訊,請參閱 AMQP 支援的訊息通道。
Redis 變更
本節描述了 Spring Integration Redis 功能的一般變更。
[[list-push/pop-direction]] ==== 列表推入/彈出方向
以前,佇列通道介面卡總是以固定方向使用 Redis 列表,從左端推入,從右端讀取。您現在可以使用 RedisQueueMessageDrivenEndpoint 和 RedisQueueOutboundChannelAdapter 的 rightPop 和 leftPush 選項分別配置讀取和寫入方向。有關更多資訊,請參閱 Redis 佇列入站通道介面卡 和 Redis 隊列出站通道介面卡。
佇列入站閘道器預設序列化器
入站閘道器中的預設序列化器已更改為 JdkSerializationRedisSerializer,以與出站閘道器相容。有關更多資訊,請參閱 Redis 佇列入站閘道器。
HTTP 變更
以前,對於沒有 content-type 頭的帶有正文的請求(例如 POST),正文會被忽略。在此版本中,此類請求的內容型別被視為 application/octet-stream,如 RFC 2616 所建議。有關更多資訊,請參閱 HTTP 入站元件。
uriVariablesExpression 現在預設使用 SimpleEvaluationContext(自 4.3.15 起)。有關更多資訊,請參閱 對映 URI 變數。
SFTP 變更
本節描述了 Spring Integration SFTP 功能的一般變更。
chmod 變更
SFTP 出站閘道器(用於 put 和 mput 命令)和 SFTP 出站通道介面卡現在支援 chmod 屬性,用於在上傳後更改遠端檔案許可權。有關更多資訊,請參閱 SFTP 出站通道介面卡 和 SFTP 出站閘道器。
FTP 變更
本節描述了 Spring Integration FTP 功能的一般變更。
會話變更
FtpSession 現在支援 list() 和 listNames() 方法的 null,因為底層 FTP 客戶端可以使用它。因此,您現在可以配置 FtpOutboundGateway 而無需 remoteDirectory 表示式。您還可以配置 <int-ftp:inbound-channel-adapter> 而無需 remote-directory 或 remote-directory-expression。有關更多資訊,請參閱 FTP/FTPS 介面卡。
路由器變更
ErrorMessageExceptionTypeRouter 現在支援 Exception 超類對映,以避免在有多個繼承者的情況下同一通道的重複。為此,ErrorMessageExceptionTypeRouter 在初始化期間載入對映類,以便在出現 ClassNotFoundException 時快速失敗。
有關更多資訊,請參閱 路由器。
頭對映
本節描述了 4.2 和 4.3 版本之間頭對映的變更。
AMQP 頭對映
以前,預設情況下只對映標準 AMQP 頭。您必須顯式啟用使用者定義頭的對映。在此版本中,預設情況下所有頭都對映。此外,入站 amqp_deliveryMode 頭不再預設對映。有關更多資訊,請參閱 AMQP 訊息頭。
Groovy 指令碼
您現在可以使用 compile-static 提示或任何其他 CompilerConfiguration 選項配置 groovy 指令碼。有關更多資訊,請參閱 Groovy 配置。
@InboundChannelAdapter 變更
@InboundChannelAdapter 現在具有常規 value 的別名 channel 屬性。此外,目標 SourcePollingChannelAdapter 元件現在可以以後期繫結方式從其提供的名稱(outputChannelName 選項)解析目標 outputChannel bean。有關更多資訊,請參閱 註解支援。
XMPP 變更
XMPP 通道介面卡現在支援 XMPP 擴充套件 (XEP)。有關更多資訊,請參閱 XMPP 擴充套件。
WireTap 後期繫結
WireTap ChannelInterceptor 現在可以接受一個 channelName,該名稱稍後在第一個活動攔截器操作期間解析為目標 MessageChannel。有關更多資訊,請參閱 Wire Tap。
ChannelMessageStoreQueryProvider 變更
ChannelMessageStoreQueryProvider 現在支援 H2 資料庫。有關更多資訊,請參閱 支援訊息通道。
WebSocket 變更
ServerWebSocketContainer 現在公開一個 allowedOrigins 選項,SockJsServiceOptions 公開一個 suppressCors 選項。有關更多資訊,請參閱 WebSockets 支援。