3.0 和 4.0 之間的更改
新元件
4.0 版本新增了許多元件。
MQTT 通道介面卡
MQTT 通道介面卡(以前在 Spring Integration Extensions 儲存庫中可用)現在作為 Spring Integration 常規發行版的一部分提供。請參閱MQTT 支援。
@EnableIntegration
我們添加了@EnableIntegration註解,以允許在使用@Configuration類時宣告標準的 Spring Integration bean。有關更多資訊,請參閱註解支援。
@IntegrationComponentScan
我們添加了@IntegrationComponentScan註解,以允許對 Spring Integration 特定元件進行類路徑掃描。有關更多資訊,請參閱註解支援。
“@EnableMessageHistory”
您現在可以在@Configuration類中使用@EnableMessageHistory註解啟用訊息歷史記錄。此外,JMX MBean 可以修改訊息歷史記錄設定。此外,MessageHistory可以跟蹤註解端點(例如@ServiceActivator、@Splitter等)自動建立的MessageHandler例項。有關更多資訊,請參閱訊息歷史記錄。
@MessagingGateway
您現在可以使用@MessagingGateway註解配置訊息閘道器介面。它類似於<int:gateway/>XML 元素。有關更多資訊,請參閱@MessagingGateway註解。
Spring Boot @EnableAutoConfiguration
除了前面提到的@EnableIntegration註解之外,我們還引入了一個鉤子,允許使用 Spring Boot 的@EnableAutoConfiguration註解配置 Spring Integration 基礎設施 bean。有關更多資訊,請參閱 Spring Boot 參考指南中的“自動配置”。
@GlobalChannelInterceptor
除了上面提到的@EnableIntegration註解之外,我們還引入了@GlobalChannelInterceptor註解。有關更多資訊,請參閱註解支援。
@IntegrationConverter
我們引入了@IntegrationConverter註解作為<int:converter/>元件的模擬。有關更多資訊,請參閱註解支援。
@EnablePublisher
我們添加了@EnablePublisher註解,以允許為@Publisher註解指定default-publisher-channel。有關更多資訊,請參閱註解支援。
Redis 通道訊息儲存
我們添加了一個 Redis MessageGroupStore,它經過最佳化,可用於在持久化QueueChannel時作為後端。有關更多資訊,請參閱Redis 通道訊息儲存。
我們添加了一個 Redis ChannelPriorityMessageStore。您可以使用它按優先順序檢索訊息。有關更多資訊,請參閱Redis 通道訊息儲存。
MongoDB 通道訊息儲存
MongoDB 支援現在提供MongoDbChannelMessageStore,這是一個通道特定的MessageStore實現。將priorityEnabled = true時,您可以在<int:priority-queue>元素中使用它來實現持久化訊息的優先順序排序輪詢。有關更多資訊,請參閱MongoDB 通道訊息儲存。
@EnableIntegrationMBeanExport
您現在可以在@Configuration類中使用@EnableIntegrationMBeanExport註解啟用IntegrationMBeanExporter。有關更多資訊,請參閱MBean 匯出器。
ChannelSecurityInterceptorFactoryBean
ChannelSecurityInterceptorFactoryBean現在支援為使用@Configuration類的訊息通道配置 Spring Security。有關更多資訊,請參閱Spring Integration 中的安全性。
Redis 命令閘道器
Redis 支援現在提供<outbound-gateway>元件,用於透過使用RedisConnection#execute方法執行通用 Redis 命令。有關更多資訊,請參閱Redis 出站命令閘道器。
RedisLockRegistry
RedisLockRegistry現在可用,以支援對多個應用程式例項和伺服器可見的全域性鎖。這些可以與多個應用程式例項的聚合訊息處理程式一起使用,以便僅在一個例項上發生組釋放。有關更多資訊,請參閱Redis 鎖登錄檔和聚合器。
@Poller
基於註解的訊息配置現在可以有一個poller屬性。這意味著用@ServiceActivator、@Aggregator和類似註解註解的方法現在可以使用引用PollableChannel的inputChannel。有關更多資訊,請參閱註解支援。
@InboundChannelAdapter和帶註解端點的SmartLifecycle
我們添加了@InboundChannelAdapter方法註解。它類似於<int:inbound-channel-adapter>XML 元件。此外,所有訊息註解現在都提供SmartLifecycle選項。有關更多資訊,請參閱註解支援。
Twitter 搜尋出站閘道器
我們添加了一個新的 Twitter 端點:<int-twitter-search-outbound-gateway/>。與每次都使用相同搜尋查詢進行輪詢的搜尋入站介面卡不同,出站閘道器允許按需定製查詢。有關更多資訊,請參閱Spring Integration Social Twitter。
@BridgeFrom和@BridgeTo註解
我們引入了@BridgeFrom和@BridgeTo@Bean方法註解,以標記@Configuration類中的MessageChannel bean。有關更多資訊,請參閱註解支援。
元訊息註解
訊息註解(@ServiceActivator、@Router、@MessagingGateway等)現在可以配置為使用者定義的訊息註解的元註解。此外,使用者定義的註解可以具有相同的屬性(inputChannel、@Poller、autoStartup等)。有關更多資訊,請參閱註解支援。
一般更改
本節描述了從 3.0 版本到 4.0 版本的一般更改。
要求 Spring Framework 4.0
我們將核心訊息抽象(Message、MessageChannel等)移動到 Spring Framework 的spring-messaging模組。在其程式碼中直接引用這些類的開發人員需要進行更改,如3.0 到 4.0 遷移指南的第一節所述。
XPath 標頭增強器:標頭型別
我們為<int-xml:xpath-header-enricher>的header子元素引入了header-type屬性。此屬性提供了標頭值的目標型別(XPath 表示式評估的結果將轉換為此型別)。有關更多資訊,請參閱XPath 標頭增強器。
物件到 JSON 轉換器:節點結果
我們為<int:object-to-json-transformer>引入了result-type屬性。此屬性提供了將物件對映到 JSON 的結果的目標型別。它支援STRING(預設)和NODE。有關更多資訊,請參閱自 3.0 版起,Spring Integration 還提供了一個內建的#xpath SpEL 函式,可用於表示式。。
JMS 標頭對映
DefaultJmsHeaderMapper現在將傳入的JMSPriority標頭對映到 Spring Integration priority標頭。以前,priority僅用於出站訊息。有關更多資訊,請參閱將訊息標頭對映到 JMS 訊息和從 JMS 訊息對映。
JMS 出站通道介面卡
JMS 出站通道介面卡現在支援session-transacted屬性(預設值:false)。以前,您必須注入自定義的JmsTemplate才能使用事務。請參閱出站通道介面卡。
JMS 入站通道介面卡
JMS 入站通道介面卡現在支援session-transacted屬性(預設值:false)。以前,您必須注入自定義的JmsTemplate才能使用事務。該介面卡允許在acknowledgeMode中使用“transacted”,這是不正確的並且不起作用。此值不再允許。請參閱入站通道介面卡。
資料型別通道
您現在可以指定一個MessageConverter,用於在資料型別通道中將有效載荷轉換為(如果需要)接受的datatype例項之一。有關更多資訊,請參閱資料型別通道配置。
更簡單的重試建議配置
我們添加了簡化的名稱空間支援來配置RequestHandlerRetryAdvice。有關更多資訊,請參閱配置重試建議。
關聯端點:基於時間的釋放策略
我們為<int:aggregator>和<int:resequencer>添加了互斥的group-timeout和group-timeout-expression屬性。這些屬性允許強制完成部分MessageGroup,前提是ReleaseStrategy不釋放組,並且在指定時間內沒有進一步的訊息到達。有關更多資訊,請參閱使用 XML 配置聚合器。
Redis 元資料儲存
RedisMetadataStore現在實現了ConcurrentMetadataStore,使其可以在多個應用程式例項或伺服器環境中用於AbstractPersistentAcceptOnceFileListFilter實現。有關更多資訊,請參閱Redis 元資料儲存、讀取檔案、FTP 入站通道介面卡和SFTP 入站通道介面卡。
JdbcChannelMessageStore和PriorityChannel
JdbcChannelMessageStore現在實現了PriorityCapableChannelMessageStore,使其可以用作priority-queue例項的message-store引用。有關更多資訊,請參閱後端訊息通道。
FTP 超時
DefaultFtpSessionFactory現在公開了connectTimeout、defaultTimeout和dataTimeout屬性,避免了子類化工廠以設定這些常見屬性的需要。postProcess*方法仍然可用於更高階的配置。有關更多資訊,請參閱FTP 會話工廠。
Twitter:StatusUpdatingMessageHandler
StatusUpdatingMessageHandler(<int-twitter:outbound-channel-adapter>)現在支援tweet-data-expression屬性來構建org.springframework.social.twitter.api.TweetData物件以更新時間線狀態。此功能允許例如附加影像。有關更多資訊,請參閱Spring Integration Social Twitter。
JPA 檢索閘道器:id-expression
我們為<int-jpa:retrieving-outbound-gateway>引入了id-expression屬性以執行EntityManager.find(Class entityClass, Object primaryKey)。有關更多資訊,請參閱檢索出站閘道器。
TCP 反序列化事件
當其中一個標準反序列化器在將輸入流解碼為訊息時遇到問題時,它現在會發出TcpDeserializationExceptionEvent,允許應用程式檢查發生異常時的資料。有關更多資訊,請參閱TCP 連線事件。
@Bean定義上的訊息註解
您現在可以在@Configuration類中的@Bean定義上配置訊息註解(@ServiceActivator、@Router、@InboundChannelAdapter等)。有關更多資訊,請參閱註解支援。