3.0 和 4.0 之间的更改
新组件
版本 4.0 添加了许多新组件。
MQTT 通道适配器
MQTT 通道适配器(之前在 Spring Integration Extensions 仓库中提供)现在已包含在正常的 Spring Integration 发行版中。见 MQTT 支持。
@EnableIntegration
我们添加了 @EnableIntegration
注解,以允许在使用 @Configuration
类时声明标准的 Spring Integration beans。有关更多信息,请参见 注解支持。
@IntegrationComponentScan
我们添加了 @IntegrationComponentScan
注解以允许对 Spring Integration 特定组件进行类路径扫描。有关更多信息,请参阅 注解支持。
“@EnableMessageHistory”
在版本 4.0 中新增的消息历史记录功能。
你现在可以使用 @EnableMessageHistory
注解在 @Configuration
类中启用消息历史记录。此外,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
在版本 4.0 中,@GlobalChannelInterceptor
是一个全局通道拦截器。
除了上面提到的 @EnableIntegration
注解外,我们还引入了 @GlobalChannelInterceptor
注解。有关更多信息,请参阅 注解支持。
@IntegrationConverter
在版本 4.0 中引入的集成转换器。
我们引入了 @IntegrationConverter
注解作为 <int:converter/>
组件的类似物。有关更多信息,请参阅注解支持。
@EnablePublisher
我们添加了 @EnablePublisher
注解,以允许为 @Publisher
注解指定一个 default-publisher-channel
。更多信息,请参见 注解支持。
Redis 通道消息存储
我们添加了一个 Redis MessageGroupStore
,它在为 QueueChannel
提供持久化支持时进行了优化。有关更多信息,请参阅 Redis Channel Message Stores。
我们添加了一个 Redis ChannelPriorityMessageStore
。你可以使用它按优先级检索消息。更多信息,请参见 Redis 通道消息存储。
MongoDB Channel 消息存储
MongoDB 支持现在提供了 MongoDbChannelMessageStore
,这是一个特定于通道的 MessageStore
实现。通过设置 priorityEnabled = true
,你可以在 <int:priority-queue>
元素中使用它,以实现持久化消息的优先级顺序轮询。更多详情请参见 MongoDB 通道消息存储。
@EnableIntegrationMBeanExport
你现在可以使用 @EnableIntegrationMBeanExport
注解在一个 @Configuration
类中启用 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 搜索 outbound 网关
我们添加了一个新的 Twitter 端点:<int-twitter-search-outbound-gateway/>
。与每次使用相同搜索查询进行轮询的搜索入站适配器不同,出站网关允许按需自定义查询。有关更多信息,请参阅 Spring Integration Social Twitter。
@BridgeFrom
和 @BridgeTo
注解
我们引入了 @BridgeFrom
和 @BridgeTo
@Bean
方法注解来标记 @Configuration
类中的 MessageChannel
beans。有关更多信息,请参阅注解支持。
元消息注解
消息注解(@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 Header Enricher 的标题类型
我们为 <int-xml:xpath-header-enricher>
的 header
子元素引入了 header-type
属性。此属性提供了目标类型,用于将 XPath 表达式评估的结果转换为头值的目标类型。有关更多信息,请参阅 XPath Header Enricher。
Object To JSON 转换器:节点结果
我们为 <int:object-to-json-transformer>
引入了 result-type
属性。此属性提供了将对象映射到 JSON 的结果的目标类型。它支持 STRING
(默认值)和 NODE
。有关更多信息,请参阅 自版本 3.0 起,Spring Integration 还提供了一个内置的 #xpath SpEL 函数,可在表达式中使用。。
JMS 标头映射
现在,DefaultJmsHeaderMapper
将传入的 JMSPriority
头映射到 Spring Integration 的 priority
头。以前,priority
仅在 outbound 消息中考虑。有关更多信息,请参阅消息头与 JMS 消息之间的映射。
JMS 外发通道适配器
JMS outbound 通道适配器现在支持 session-transacted
属性(默认值:false
)。以前,您必须注入一个自定义的 JmsTemplate
来使用事务。详见 Outbound Channel Adapter。
JMS 入站通道适配器
JMS 入站通道适配器现在支持 session-transacted
属性(默认值:false
)。以前,您必须注入一个自定义的 JmsTemplate
来使用事务。适配器在 acknowledgeMode
中允许 'transacted',这是不正确的并且无法工作。此值不再被允许。请参阅 入站通道适配器。
数据类型通道
你现在可以指定一个 MessageConverter
,在将有效负载转换为 Datatype 通道接受的 datatype
实例之一时使用(如果必要)。有关更多信息,请参阅Datatype 通道配置。
更简单的重试建议配置
我们添加了简化的命名空间支持来配置 RequestHandlerRetryAdvice
。有关更多信息,请参阅配置重试建议。
相关性端点:基于时间的发布策略
我们为 <int:aggregator>
和 <int:resequencer>
添加了互斥的 group-timeout
和 group-timeout-expression
属性。这些属性允许在部分 MessageGroup
的 ReleaseStrategy
不释放组且在指定时间内没有更多消息到达的情况下,强制完成该组。有关更多信息,请参阅 使用 XML 配置聚合器。
Redis 元数据存储
RedisMetadataStore
现在实现了 ConcurrentMetadataStore
,这使得它可以在多应用程序实例或多服务器环境中使用,例如,在 AbstractPersistentAcceptOnceFileListFilter
实现中。有关更多信息,请参阅 Redis Metadata Store、读取文件、FTP 入站通道适配器 和 SFTP 入站通道适配器。
JdbcChannelMessageStore
和 PriorityChannel
T`JdbcChannelMessageStore` 现在实现了 PriorityCapableChannelMessageStore
,使其可以作为 priority-queue
实例的 message-store
引用。有关更多信息,请参阅 支持消息通道。
AMQP 端点交付模式
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)
。更多信息请参见 检索 outbound 网关。
TCP 反序列化事件
当其中一个标准反序列化器在将输入流解码为消息时遇到问题,它现在会发出一个 TcpDeserializationExceptionEvent
,让应用程序检查异常发生时的数据。更多信息请参见 TCP 连接事件。
@Bean
定义上的消息注解
你现在可以在 @Configuration
类中的 @Bean
定义上配置消息注解(@ServiceActivator
、@Router
、@InboundChannelAdapter
等)。有关更多信息,请参阅注解支持。