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