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 Registry和 Aggregator。
@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
、@Poller
、autoStartup
等)。有关详细信息,请参阅 Annotation Support。
General Changes
本部分描述了从版本 3.0 到版本 4.0 的一般更改。
Requires Spring Framework 4.0
我们将核心消息抽象(Message
、MessageChannel
和其他)移至 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-timeout
和 group-timeout-expression
属性添加到 <int:aggregator>
和 <int:resequencer>
中。这些属性允许强制完成部分 MessageGroup
,前提是 ReleaseStrategy
不释放组,并且在指定的时间内没有收到进一步的消息。有关更多信息,请参见 Configuring an Aggregator with XML。
Redis Metadata Store
RedisMetadataStore
现在实现了 ConcurrentMetadataStore
,使其能够在多个应用程序实例或服务器环境中的 AbstractPersistentAcceptOnceFileListFilter
实现中使用。有关更多信息,请参见 Redis Metadata Store、Reading Files、FTP Inbound Channel Adapter 和 SFTP 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 Adapter 和 Outbound Gateway。
FTP Timeouts
现在,DefaultFtpSessionFactory
公开了 connectTimeout
、defaultTimeout
和 dataTimeout
属性,从而避免了对工厂进行子类化以设置这些通用属性的需要。仍然提供了 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。