跳到主要内容

3.0 和 4.0 之间的更改

QWen Plus 中英对照 Changes between 3.0 and 4.0

请参阅 迁移指南 以了解可能影响您应用程序的重要更改。您可以在 wiki 上找到回溯到 2.1 版本的所有迁移指南。

新组件

版本 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 等注解的方法现在可以使用引用 PollableChannelinputChannel 。更多详情,请参阅注解支持

@InboundChannelAdapterSmartLifecycle 用于注解的端点

我们添加了 @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@PollerautoStartup 等)。有关详细信息,请参阅注解支持

通用更改

本节描述了从 3.0 版到 4.0 版的一般性更改。

需要 Spring Framework 4.0

我们将核心消息传递抽象 (MessageMessageChannel 等) 移动到了 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-timeoutgroup-timeout-expression 属性。这些属性允许在部分 MessageGroupReleaseStrategy 不释放组且在指定时间内没有更多消息到达的情况下,强制完成该组。有关更多信息,请参阅 使用 XML 配置聚合器

Redis 元数据存储

RedisMetadataStore 现在实现了 ConcurrentMetadataStore,这使得它可以在多应用程序实例或多服务器环境中使用,例如,在 AbstractPersistentAcceptOnceFileListFilter 实现中。有关更多信息,请参阅 Redis Metadata Store读取文件FTP 入站通道适配器SFTP 入站通道适配器

JdbcChannelMessageStorePriorityChannel

T`JdbcChannelMessageStore` 现在实现了 PriorityCapableChannelMessageStore,使其可以作为 priority-queue 实例的 message-store 引用。有关更多信息,请参阅 支持消息通道

AMQP 端点交付模式

Spring AMQP 默认情况下会在代理上创建持久化消息。您可以通过设置 amqp_deliveryMode 头信息或自定义映射器来覆盖此行为。我们添加了一个便捷的 default-delivery-mode 属性到适配器中,以提供对此重要设置的更简单配置。有关更多信息,请参阅 输出通道适配器输出网关

FTP 超时

DefaultFtpSessionFactory 现在暴露了 connectTimeoutdefaultTimeoutdataTimeout 属性,避免了需要通过子类化工厂来设置这些常见属性。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 等)。有关更多信息,请参阅注解支持