3.0 和 4.0 之间的更改
新组件
版本 4.0 添加了许多新组件。
MQTT 通道适配器
MQTT 通道适配器(以前在 Spring Integration Extensions 存储库中提供)现在作为常规 Spring Integration 发行版的一部分提供。 请参阅 MQTT 支持。
@EnableIntegration
我们添加了@EnableIntegration
注解,以允许在使用@Configuration
类。
有关更多信息,请参阅 Annotation Support 。
@IntegrationComponentScan
我们添加了@IntegrationComponentScan
注解允许对 Spring 集成特定的组件进行 Classpath 扫描。
有关更多信息,请参阅 Annotation Support 。
“@EnableMessageHistory”
您现在可以使用@EnableMessageHistory
注解@Configuration
类。
此外,JMX MBean 还可以修改消息历史记录设置。
也MessageHistory
可以跟踪自动创建的MessageHandler
带注释的终端节点(例如@ServiceActivator
,@Splitter
等)。
有关更多信息,请参阅消息历史记录。
@MessagingGateway
现在,您可以使用@MessagingGateway
注解。
它是<int:gateway/>
XML 元素。
有关更多信息,请参阅@MessagingGateway
注解.
Spring Boot@EnableAutoConfiguration
以及@EnableIntegration
注解中,我们引入了一个钩子,允许使用 Spring Boot 的@EnableAutoConfiguration
注解。
有关详细信息,请参阅 Spring Boot 参考指南中的“自动配置”。
@GlobalChannelInterceptor
以及@EnableIntegration
注解中,我们引入了@GlobalChannelInterceptor
注解。
有关更多信息,请参阅注释支持。
@IntegrationConverter
我们引入了@IntegrationConverter
注解作为<int:converter/>
元件。
有关更多信息,请参阅注释支持。
@EnablePublisher
我们添加了@EnablePublisher
注解以允许指定default-publisher-channel
为@Publisher
附注。
有关更多信息,请参阅 Annotation Support 。
Redis 通道消息存储
我们添加了一个 RedisMessageGroupStore
,经过优化,可在备份QueueChannel
用于持久性。
有关更多信息,请参阅 Redis 通道消息存储。
我们添加了一个 RedisChannelPriorityMessageStore
.
您可以使用它来按优先级检索消息。
有关更多信息,请参阅 Redis 通道消息存储。
MongodDB Channel 消息存储
MongoDB 支持现在提供MongoDbChannelMessageStore
,这是特定于通道的MessageStore
实现。
跟priorityEnabled = true
,您可以在<int:priority-queue>
元素来实现持久化消息的优先顺序轮询。
有关更多信息,请参阅 MongoDB 通道消息存储。
@EnableIntegrationMBeanExport
您现在可以启用IntegrationMBeanExporter
使用@EnableIntegrationMBeanExport
注解@Configuration
类。
有关更多信息,请参阅 MBean 导出器。
ChannelSecurityInterceptorFactoryBean
ChannelSecurityInterceptorFactoryBean
现在支持为使用@Configuration
类。
有关更多信息,请参阅 Spring Integration 中的安全性。
Redis 命令网关
Redis 支持现在提供<outbound-gateway>
组件来执行通用 Redis 命令,方法是使用RedisConnection#execute
方法。
有关更多信息,请参阅 Redis 出站命令网关。
RedisLockRegistry
这RedisLockRegistry
现在可用于支持对多个应用程序实例和服务器可见的全局锁定。
这些可用于跨多个应用程序实例聚合消息处理程序,以便仅在一个实例上发生组发布。
有关更多信息,请参阅 Redis Lock Registry and Aggregator。
@Poller
基于注释的消息传送配置现在可以具有poller
属性。
这意味着@ServiceActivator
,@Aggregator
,类似的注解现在可以使用inputChannel
这是对PollableChannel
.
有关更多信息,请参阅注释支持。
@InboundChannelAdapter
和SmartLifecycle
对于带注释的终端节点
我们添加了@InboundChannelAdapter
method 注解。
它是<int:inbound-channel-adapter>
XML 组件。
此外,所有消息收发注释现在都提供SmartLifecycle
选项。
有关更多信息,请参阅注释支持。
Twitter 搜索出站网关
我们添加了一个新的 twitter 端点:<int-twitter-search-outbound-gateway/>
.
与每次都使用相同的搜索查询进行轮询的搜索入站适配器不同,出站网关允许按需自定义查询。
有关更多信息,请参阅 Spring Integration Social Twitter。
@BridgeFrom
和@BridgeTo
附注
我们引入了@BridgeFrom
和@BridgeTo
@Bean
要标记的方法注释MessageChannel
豆子@Configuration
类。
有关更多信息,请参阅注释支持。
元消息注释
消息注释 (@ServiceActivator
,@Router
,@MessagingGateway
等)现在可以配置为用户定义的消息传递注释的元注释。
此外,用户定义的注释可以具有相同的属性 (inputChannel
,@Poller
,autoStartup
等)。
有关更多信息,请参阅注释支持。
一般更改
本节介绍从版本 3.0 到版本 4.0 的一般更改。
需要 Spring Framework 4.0
我们将核心消息传递抽象 (Message
,MessageChannel
等)添加到 Spring 框架spring-messaging
模块。
在代码中直接引用这些类的开发人员需要进行更改,如 3.0 到 4.0 迁移指南的第一部分所述。
XPath Header Enricher 的 Header Type
我们引入了header-type
属性header
子元素的<int-xml:xpath-header-enricher>
.
此属性提供 header 值的目标类型(XPath 表达式评估的结果将转换为该类型)。
有关更多信息,请参阅 XPath Header Enricher。
对象到 JSON 转换器:节点结果
我们引入了result-type
属性<int:object-to-json-transformer>
.
此属性为将对象映射到 JSON 的结果提供目标类型。
它支持STRING
(默认值)和NODE
.
有关更多信息,请参阅从 3.0 版本开始, Spring 集成还提供了一个内置的#xpath
用于表达式的 SPEL 函数。.
JMS 标头映射
这DefaultJmsHeaderMapper
现在映射传入的JMSPriority
标头添加到 Spring 集成priority
页眉。
以前priority
仅考虑用于出站邮件。
有关更多信息,请参阅将消息标头映射到 JMS 消息和从 JMS 消息映射消息。
JMS 出站通道适配器
JMS 出站通道适配器现在支持session-transacted
属性(默认值:false
).
以前,您必须注入自定义的JmsTemplate
使用交易。
请参见出站通道适配器。
JMS 入站通道适配器
JMS 入站通道适配器现在支持session-transacted
属性(默认值:false
).
以前,您必须注入自定义的JmsTemplate
使用交易。
适配器允许在acknowledgeMode
,这是不正确的,不起作用。
不再允许此值。
请参见入站通道适配器。
数据类型通道
您现在可以指定MessageConverter
在将 payload 转换为已接受的datatype
实例。
有关更多信息,请参阅数据类型通道配置。
更简单的重试建议配置
我们添加了简化的命名空间支持,以配置RequestHandlerRetryAdvice
.
有关更多信息,请参阅配置重试建议。
关联终端节点:基于时间的发布策略
我们添加了互斥的group-timeout
和group-timeout-expression
attributes 设置为<int:aggregator>
和<int:resequencer>
.
这些属性允许强制完成 partialMessageGroup
,前提是ReleaseStrategy
不会释放组,并且在指定的时间内没有其他消息到达。
有关更多信息,请参阅使用 XML 配置聚合器。
Redis 元数据存储
这RedisMetadataStore
现在实现ConcurrentMetadataStore
,例如,在AbstractPersistentAcceptOnceFileListFilter
在多个应用程序实例或服务器环境中实现。
有关更多信息,请参阅 Redis 元数据存储、读取文件、FTP 入站通道适配器和 SFTP 入站通道适配器。
JdbcChannelMessageStore
和PriorityChannel
T'JdbcChannelMessageStore' 现在实现PriorityCapableChannelMessageStore
,让它用作message-store
参考priority-queue
实例。
有关更多信息,请参阅支持消息通道。
FTP 超时
这DefaultFtpSessionFactory
现在公开了connectTimeout
,defaultTimeout
和dataTimeout
properties 的子类化,无需子类化 Factory 来设置这些公共属性。
这postProcess*
方法仍可用于更高级的配置。
有关更多信息,请参阅 FTP Session Factory 。
唽:StatusUpdatingMessageHandler
这StatusUpdatingMessageHandler
(<int-twitter:outbound-channel-adapter>
) 现在支持tweet-data-expression
属性来构建一个org.springframework.social.twitter.api.TweetData
对象来更新时间轴状态。
例如,此功能允许附加图像。
有关更多信息,请参见 Spring Integration Social Twitter。
JPA 检索网关:id-expression
我们引入了id-expression
属性<int-jpa:retrieving-outbound-gateway>
执行EntityManager.find(Class entityClass, Object primaryKey)
.
有关更多信息,请参阅检索出站网关。
TCP 反序列化事件
当其中一个标准反序列化器遇到将输入流解码为消息的问题时,它现在会发出一个TcpDeserializationExceptionEvent
,让应用程序检查发生异常时的数据。
有关更多信息,请参阅 TCP 连接事件。
消息注释@Bean
定义
您现在可以配置消息收发注释 (@ServiceActivator
,@Router
,@InboundChannelAdapter
等)@Bean
定义@Configuration
类。
有关更多信息,请参阅注释支持。