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
仅用于出站消息。
有关更多信息,请参阅 x4.0-jms-header-mapping。
JMS 出站通道适配器
JMS 出站通道适配器现在支持 session-transacted
属性(默认值:false
)。
以前,您必须注入自定义的 JmsTemplate
才能使用事务。
请参阅 x4.0-jms-ob。
JMS 入站通道适配器
JMS 入站通道适配器现在支持 session-transacted
属性(默认值:false
)。
以前,您必须注入自定义的 JmsTemplate
才能使用事务。
适配器允许在 acknowledgeMode
中使用“transacted”,这是不正确的,并且不起作用。
此值不再允许。
请参阅 x4.0-jms-ib。
数据类型通道
您现在可以指定一个 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
等)。
有关更多信息,请参阅 注解支持。