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 等)。
有关更多信息,请参阅 注解支持。