Changes between 3.0 and 4.0

有关可能影响您的应用程序的重要修改,请见 Migration Guide。您可以在 wiki上找到可用于回溯至 2.1 的所有版本的迁移指南。

New Components

4.0 版本添加了许多新组件。

MQTT Channel Adapters

MQTT 通道适配器(以前可在 Spring Integration Extensions 储藏库中使用)现在可作为常规 Spring Integration 分发的组成部分获得。请参阅 MQTT Support

@EnableIntegration

我们添加了 `@EnableIntegration`注释,以便在使用 `@Configuration`类时声明标准 Spring Integration bean。有关更多信息,请参阅 Annotation Support

@IntegrationComponentScan

我们添加了 `@IntegrationComponentScan`注释,以便针对特定于 Spring Integration 的组件进行类路径扫描。有关更多信息,请参阅 Annotation Support

“@EnableMessageHistory”

您现在可以通过 @Configuration`类中的 `@EnableMessageHistory`注释启用消息历史记录。此外,JMX MBean 可以修改消息历史记录设置。此外,`MessageHistory`可以跟踪带注释端点的自动创建的 `MessageHandler`实例(例如 `@ServiceActivator、`@Splitter`等)。有关更多信息,请参阅 Message History

@MessagingGateway

你现在可以使用 @MessagingGateway 注释配置消息网关接口。它是 <int:gateway/> XML 元素的模拟。更多信息,请参见 xref:gateway.adoc#messaging-gateway-annotation[@MessagingGateway 注释。

Spring Boot @EnableAutoConfiguration

除了前面提到的 @EnableIntegration 注释之外,我们还引入了一个钩子,以允许 Spring Integration 基础设施 Bean 使用 Spring Boot 的 @EnableAutoConfiguration 注释进行配置。更多信息,请参见 Spring Boot 参考指南中的 link:https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html[“Auto-configuration”。

@GlobalChannelInterceptor

除了上面提到的 `@EnableIntegration`注释外,我们还引入了 `@GlobalChannelInterceptor`注释。有关更多信息,请参阅 Annotation Support

@IntegrationConverter

我们引入了 `@IntegrationConverter`注释,作为 `<int:converter/>`组件的类比。有关更多信息,请参阅 Annotation Support

@EnablePublisher

我们添加了 @EnablePublisher`注释,以允许为 `@Publisher`注释指定 `default-publisher-channel。有关更多信息,请参阅 Annotation Support

Redis Channel Message Stores

我们增加了一个适用于在支持持久性的 QueueChannel`时优化的 Redis `MessageGroupStore。有关更多信息,请参阅 Redis Channel Message Stores

我们增加了一个 Redis ChannelPriorityMessageStore。您可以使用它按优先级检索消息。有关更多信息,请参阅 Redis Channel Message Stores

MongodDB Channel Message Store

MongoDB 支持现在提供了 MongoDbChannelMessageStore,它是一项针对特定通道的 MessageStore`实现。使用 `priorityEnabled = true,您可以在 `<int:priority-queue>`元素中使用它来实现持久化消息的优先级排序轮询。有关更多信息,请参阅 MongoDB Channel Message Store

@EnableIntegrationMBeanExport

现在,您可以在 @Configuration`类中通过 `@EnableIntegrationMBeanExport`注释启用 `IntegrationMBeanExporter。有关更多信息,请参阅 MBean Exporter

ChannelSecurityInterceptorFactoryBean

`ChannelSecurityInterceptorFactoryBean`现在支持为使用 `@Configuration`类的消息通道配置 Spring Security。有关更多信息,请参阅 Security in Spring Integration

Redis Command Gateway

Redis 支持现在提供了 `<outbound-gateway>`组件,以通过使用 `RedisConnection#execute`方法执行通用 Redis 命令。有关更多信息,请参阅 Redis Outbound Command Gateway

RedisLockRegistry

现在,`RedisLockRegistry`可用于支持多应用程序实例和服务器之间可见的全局锁。这些可与多个应用程序实例中的信息处理程序聚合配合使用,如此将仅在一个实例上执行组释放。有关更多信息,请参阅 Redis Lock RegistryAggregator

@Poller

基于注释的消息传递配置现在可以包含 poller 特性。这意味着注释为 @ServiceActivator@Aggregator 及类似注释的方法现在可以使用一个 inputChannel,该方法是对 PollableChannel 的引用。有关详细信息,请参阅 Annotation Support

@InboundChannelAdapter and SmartLifecycle for Annotated Endpoints

我们添加了 @InboundChannelAdapter 方法注释。它是 <int:inbound-channel-adapter> XML 组件的对应项。此外,现在所有消息传递注释都提供了 SmartLifecycle 选项。有关详细信息,请参阅 Annotation Support

Twitter Search Outbound Gateway

我们添加了一个新的 Twitter 端点:<int-twitter-search-outbound-gateway/>。与搜索入站适配器(每次使用相同的搜索查询进行轮询)不同,出站网关允许按需进行自定义查询。有关更多信息,请参见 Spring Integration Social Twitter

@BridgeFrom and @BridgeTo Annotations

我们引入了 @BridgeFrom@BridgeTo @Bean 方法注释,在 @Configuration 类中标记 MessageChannel Bean。有关详细信息,请参阅 Annotation Support

Meta-messaging Annotations

现在可以将消息传递注释 (@ServiceActivator@Router@MessagingGateway 等) 配置为用户定义的消息传递注释的元注释。此外,用户定义的注释可以具有相同的特性 (inputChannel@PollerautoStartup 等)。有关详细信息,请参阅 Annotation Support

General Changes

本部分描述了从版本 3.0 到版本 4.0 的一般更改。

Requires Spring Framework 4.0

我们将核心消息抽象(MessageMessageChannel 和其他)移至 Spring Framework `spring-messaging`模块。直接在代码中引用这些类的开发人员需要进行更改,如 3.0 to 4.0 Migration Guide的第一部分中所述。

Header Type for XPath Header Enricher

我们在 <int-xml:xpath-header-enricher>header 子元素中引入了 header-type 特性。此特性提供了标题值的目标类型(XPath 表达式求值的结果转换成的类型)。有关详细信息,请参阅 XPath Header Enricher

Object To JSON Transformer: Node Result

我们为 <int:object-to-json-transformer> 引入了 result-type 属性。此属性提供映射对象到 JSON 的结果的目标类型。它支持 STRING(默认)和 NODE。有关更多信息,请参见 Since version 3.0, Spring Integration also provides a built-in #xpath SpEL function for use in expressions.

JMS Header Mapping

DefaultJmsHeaderMapper 现在将传入 JMSPriority 头映射到 Spring Integration priority 头。以前,priority 仅考虑用于出站消息。有关更多信息,请参见 Mapping Message Headers to and from JMS Message

JMS Outbound Channel Adapter

JMS 出站通道适配器现在支持 session-transacted 属性(默认:false)。以前,您必须注入自定义 JmsTemplate 才能使用事务。请参见 Outbound Channel Adapter

JMS Inbound Channel Adapter

JMS 入站通道适配器现在支持 session-transacted 属性(默认:false)。以前,您必须注入自定义 JmsTemplate 才能使用事务。该适配器允许在 acknowledgeMode 中使用“已处理”,这是不正确的,也不会起作用。该值不再允许。请参见 Inbound Channel Adapter

Datatype Channels

您现在可以指定 MessageConverter,用于在数据类型通道中将有效负载(如果需要)转换为可接受的 datatype 实例之一。有关更多信息,请参见 Datatype Channel Configuration

Simpler Retry Advice Configuration

我们添加了简化的命名空间支持,用于配置 RequestHandlerRetryAdvice。有关更多信息,请参见 Configuring the Retry Advice

Correlation Endpoint: Time-based Release Strategy

我们将互斥的 group-timeoutgroup-timeout-expression 属性添加到 <int:aggregator><int:resequencer> 中。这些属性允许强制完成部分 MessageGroup,前提是 ReleaseStrategy 不释放组,并且在指定的时间内没有收到进一步的消息。有关更多信息,请参见 Configuring an Aggregator with XML

Redis Metadata Store

RedisMetadataStore 现在实现了 ConcurrentMetadataStore,使其能够在多个应用程序实例或服务器环境中的 AbstractPersistentAcceptOnceFileListFilter 实现中使用。有关更多信息,请参见 Redis Metadata StoreReading FilesFTP Inbound Channel AdapterSFTP Inbound Channel Adapter

JdbcChannelMessageStore and PriorityChannel

T`JdbcChannelMessageStore` 现在实现了 PriorityCapableChannelMessageStore,使其可以用作 priority-queue 实例的 message-store 引用。有关更多信息,请参见 Backing Message Channels

AMQP Endpoints Delivery Mode

默认情况下,Spring AMQP 会在代理上创建持久性消息。您可以通过设置 amqp_deliveryMode 标题或自定义映射程序来覆盖此行为。我们向适配器添加了便捷的 default-delivery-mode 特性,以更轻松地配置此重要设置。有关详细信息,请参阅 Outbound Channel AdapterOutbound Gateway

FTP Timeouts

现在,DefaultFtpSessionFactory 公开了 connectTimeoutdefaultTimeoutdataTimeout 属性,从而避免了对工厂进行子类化以设置这些通用属性的需要。仍然提供了 postProcess* 方法用于更高级的配置。有关详细信息,请参阅 FTP Session Factory

Twitter: StatusUpdatingMessageHandler

StatusUpdatingMessageHandler (<int-twitter:outbound-channel-adapter>) 现在支持 tweet-data-expression 属性,用于构建 org.springframework.social.twitter.api.TweetData 对象以更新时间轴状态。例如,此功能允许附加图片。有关更多信息,请参见 Spring Integration Social Twitter

JPA Retrieving Gateway: id-expression

我们为 <int-jpa:retrieving-outbound-gateway> 引入了 id-expression 属性,用于执行 EntityManager.find(Class entityClass, Object primaryKey)。有关更多信息,请参见 Retrieving Outbound Gateway

TCP Deserialization Events

当标准反序列化程序之一在对消息的输入流进行解码时遇到问题时,它现在会发出 TcpDeserializationExceptionEvent,让应用程序在遇到异常时检查数据。有关更多信息,请参见 TCP Connection Events

Messaging Annotations on @Bean Definitions

您现在可以在 @Configuration 类中的 @Bean 定义中配置消息传递注释 (@ServiceActivator@Router@InboundChannelAdapter 等)。有关详细信息,请参阅 Annotation Support