2.1 和 2.2 之间的更改
新组件
版本 2.2 添加了许多新的组件。
RedisStore
输入和输出通道适配器
Spring Integration 现在有了 RedisStore
入站和出站通道适配器,让你可以将 Message
有效负载写入和读取 Redis 集合。有关更多信息,请参阅 RedisStore 出站通道适配器 和 Redis Store 入站通道适配器。
MongoDB 输入和输出通道适配器
Spring Integration 现在具有 MongoDB 输入和输出通道适配器,让您能够将 Message
负载写入和读取 MongoDB 文档存储。有关更多信息,请参阅 MongoDB 输出通道适配器 和 MongoDB 输入通道适配器。
JPA 端点
Spring Integration 现在包括用于 Java 持久化 API (JPA) 的组件,用于检索和持久化 JPA 实体对象。JPA 适配器包括以下组件:
有关更多信息,请参阅 JPA 支持。
通用更改
此部分描述了从版本 2.1 到版本 2.2 的一般性更改。
默认使用 Spring 3.1
Spring Integration 现在使用 Spring 3.1。
为端点添加行为
一段时间以来,添加 <advice-chain/>
到轮询器的功能已经可用。然而,这种添加的行为会影响整个集成流程。它并没有解决为单个端点(例如)添加重试的能力。2.2 版本发布引入了 <request-handler-advice-chain/>
到许多端点。
此外,我们为此添加了三个标准建议类:
-
MessageHandlerRetryAdvice
-
MessageHandlerCircuitBreakerAdvice
-
ExpressionEvaluatingMessageHandlerAdvice
有关更多信息,请参阅为端点添加行为。
事务同步和伪事务
轮询器现在可以参与 Spring 的事务同步功能。这允许根据事务是提交还是回滚来同步诸如通过入站通道适配器重命名文件等操作。
此外,当没有“真实”的事务时,你可以通过 PseudoTransactionManager
来启用这些功能。
有关更多信息,请参阅 事务同步。
文件适配器:改进的文件覆盖和追加处理
当使用文件 outbound 通道适配器或文件 outbound 网关时,您可以使用新的 mode
属性。在 Spring Integration 2.2 之前,当目标文件存在时会被替换。现在您可以指定以下选项:
-
REPLACE
(默认) -
APPEND
-
FAIL
-
IGNORE
有关更多信息,请参阅处理现有目标文件。
更多的出站网关添加了Reply-Timeout
XML 命名空间支持为以下 outbound gateways 添加了 reply-timeout 属性:
-
AMQP 外发网关
-
文件 外发网关
-
FTP 外发网关
-
SFTP 外发网关
-
WS 外发网关
Spring-AMQP 1.1
Spring Integration 现在使用 Spring AMQP 1.1。这使得几个功能可以在 Spring Integration 应用程序中使用,包括以下内容:
-
出站网关的固定回复队列
-
HA (镜像) 队列
-
发布者确认
-
返回的消息
-
支持死信交换和死信队列
JDBC 支持 - 存储过程组件
SpEL 支持
当使用 Spring Integration JDBC 适配器的存储过程组件时,您现在可以使用 Spring 表达式语言 (SpEL) 提供存储过程名称或存储函数名称。
这样做可以让你指定在运行时调用的存储过程。例如,你可以提供希望通过消息头执行的存储过程名称。有关更多信息,请参见 存储过程。
JMX 支持
存储过程组件现在提供基本的 JMX 支持,将其某些属性公开为 MBeans:
-
存储过程名称
-
存储过程名称表达式
-
JdbcCallOperations
缓存统计信息
JDBC 支持: outbound Gateway
当你使用 JDBC outbound 网关时,更新查询不再是强制性的。你现在可以仅提供一个 select 查询,并使用请求消息作为参数来源。
JDBC 支持:通道特定的消息存储实现
我们添加了一个新的消息通道特定的消息存储实现,提供了一个使用数据库特定 SQL 查询的更具可扩展性的解决方案。有关更多信息,请参阅 支持消息通道。
有序关机
我们在 IntegrationMBeanExporter
中添加了一个名为 stopActiveComponents()
的方法。它允许 Spring Integration 应用程序有序地关闭,禁止新的入站消息进入某些适配器,并等待一段时间以允许在途消息完成。
JMS 外发网关改进
你现在可以配置 JMS 外发网关以使用 MessageListener
容器来接收回复。这样做可以提高网关的性能。
ObjectToJsonTransformer
默认情况下,ObjectToJsonTransformer
现在将 content-type
标头设置为 application/json
。有关更多信息,请参阅 Transformer。
HTTP 支持
Java 序列化通过 HTTP 不再默认启用。以前,在 Serializable
对象上设置 expected-response-type
时,Accept
标头未正确设置。我们更新了 SerializingHttpMessageConverter
以将 Accept
标头设置为 application/x-java-serialized-object
。然而,因为这可能会与现有应用程序产生不兼容问题,我们决定不再自动将此转换器添加到 HTTP 端点。
如果你想使用 Java 序列化,你需要通过使用 message-converters
属性(当你使用 XML 配置时)或通过使用 setMessageConverters()
方法(在 Java 中)将 SerializingHttpMessageConverter
添加到适当的端点。
或者,您可能希望考虑使用 JSON 代替。只需在类路径上添加 Jackson
即可启用它。