Changes between 2.1 and 2.2
参见 Migration Guide,了解可能影响应用程序的重要更改。你可以在 wiki中找到针对所有版本的迁移指南,这些版本可向后兼容到2.1。
New Components
2.2 版本增加了许多新组件。
RedisStore
Inbound and Outbound Channel Adapters
Spring Integration现在具有`RedisStore`输入和输出信道适配器,让你可以将`Message`有效负载写入和读出Redis集合。更多信息,请参见RedisStore Outbound Channel Adapter和Redis Store Inbound Channel Adapter。
MongoDB Inbound and Outbound Channel Adapters
Spring Integration现在具有MongoDB入站和出站通道适配器,让你可以将`Message`有效负载写入和读出MongoDB文档存储器。更多信息,请参见MongoDB Outbound Channel Adapter和MongoDB Inbound Channel Adapter。
JPA Endpoints
Spring Integration 现在包含用于检索和存储 JPA 实体对象 Java 持久化 API (JPA) 的组件。JPA 适配器包括以下组件:
如需了解更多信息,请参阅 JPA Support。
General Changes
本节介绍了从 2.1 版本到 2.2 版本的一般变更。
Adding Behavior to Endpoints
一段时间以来已经可以使用将 <advice-chain/>
添加到轮询器的功能。但由此添加的行为影响了整个集成流程。它没有涉及为单个端点添加(例如)重试的功能。2.2 版本引入了 <request-handler-advice-chain/>
用于许多端点。
此外,我们为此目的添加了三类标准建议:
-
MessageHandlerRetryAdvice
-
MessageHandlerCircuitBreakerAdvice
-
ExpressionEvaluatingMessageHandlerAdvice
如需了解更多信息,请参见 Adding Behavior to Endpoints。
Transaction Synchronization and Pseudo Transactions
轮询器现在可以参与 Spring 的事务同步功能。这允许同步操作,例如由入站通道适配器重命名文件,具体取决于事务是提交还是回滚。
此外,您可以通过 PseudoTransactionManager
在没有 “real” 事务存在的情况下启用此功能。
更多信息,请参见Transaction Synchronization。
File Adapter: Improved File Overwrite and Append Handling
使用文件出站通道适配器或文件出站网关后,你可以使用新的 mode
属性。在 Spring Integration 2.2 之前,目标文件被替换,当它们存在时。现在,你可以指定以下选项:
-
REPLACE
(default) -
APPEND
-
FAIL
-
IGNORE
Reply-Timeout Added to More Outbound Gateways
XML 命名空间支持为以下出站网关添加 reply-timeout 属性:
-
AMQP Outbound Gateway
-
File Outbound Gateway
-
FTP Outbound Gateway
-
SFTP Outbound Gateway
-
WS Outbound Gateway
Spring-AMQP 1.1
Spring Integration 现在使用 Spring AMQP 1.1。这使 Spring Integration 应用程序中可以使用多项功能,包括以下功能:
-
出站网关的固定回复队列
-
HA (mirrored) queues
-
Publisher confirmations
-
Returned messages
-
支持死信交换和死信队列
JDBC Support - Stored Procedures Components
SpEL Support
使用 Spring Integration JDBC 适配器的存储过程组件后,你现在可以通过使用 Spring 表达式语言 (SpEL) 来提供存储过程名称或存储功能名称。
这样做可让你指定在运行时调用的存储过程。例如,你可以提供你要通过消息头执行的存储过程名称。如需了解更多信息,请参见 Stored Procedures。
JDBC Support: Channel-specific Message Store Implementation
我们添加了一个新的消息通道特定的消息存储实现,使用特定于数据库的SQL查询提供了一个更具可扩展性的解决方案。更多信息,请参见Backing Message Channels。
Orderly Shutdown
我们向 IntegrationMBeanExporter
添加了一个称为 stopActiveComponents()
的方法。它允许 Spring Integration 应用程序有序关闭,不允许某些适配器接收新入站消息,并等待一段时间以允许进行中的消息完成。
ObjectToJsonTransformer
默认情况下,ObjectToJsonTransformer`现在将 `content-type`标头设置为 `application/json
。如需了解更多信息,请参见 Transformer。
HTTP Support
不再默认启用 HTTP 上的 Java 序列化。之前,在 Serializable
对象上设置 expected-response-type
时,Accept
头未正确设置。我们更新了 SerializingHttpMessageConverter
,以便将 Accept
头设置为 application/x-java-serialized-object
。但是,由于这可能会与现有应用程序不兼容,我们决定不再将此转换器自动添加到 HTTP 端点。
如果你希望使用 Java 序列化,你需要通过使用 message-converters
属性(当你使用 XML 配置时)或通过使用 setMessageConverters()
方法(在 Java 中)将 SerializingHttpMessageConverter
添加到相应的端点。
或者,你可能希望考虑使用 JSON。通过将 Jackson
添加到类路径即可启用它。