3.0 和 4.0 之间的变化

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

新组件

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 和类似注解的方法现在可以使用引用 PollableChannelinputChannel。 有关更多信息,请参阅 注解支持

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

一般变化

本节描述了从 3.0 版本到 4.0 版本的一般变化。

需要 Spring Framework 4.0

我们将核心消息抽象(MessageMessageChannel 等)移到了 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-timeoutgroup-timeout-expression 属性。 这些属性允许强制完成部分 MessageGroup,前提是 ReleaseStrategy 未释放组且在指定时间内没有进一步的消息到达。 有关更多信息,请参阅 使用 XML 配置聚合器

Redis 元数据存储

RedisMetadataStore 现在实现了 ConcurrentMetadataStore,使其可以在多个应用程序实例或服务器环境中的 AbstractPersistentAcceptOnceFileListFilter 实现中使用。 有关更多信息,请参阅 Redis 元数据存储读取文件FTP 入站通道适配器SFTP 入站通道适配器

JdbcChannelMessageStorePriorityChannel

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)。 有关更多信息,请参阅 检索出站网关

TCP 反序列化事件

当其中一个标准反序列化器在将输入流解码为消息时遇到问题时,它现在会发出 TcpDeserializationExceptionEvent,允许应用程序检查发生异常时的数据。 有关更多信息,请参阅 TCP 连接事件

@Bean 定义上的消息注解

您现在可以在 @Configuration 类中的 @Bean 定义上配置消息注解(@ServiceActivator@Router@InboundChannelAdapter 等)。 有关更多信息,请参阅 注解支持