|
如需使用最新稳定版本,请使用 Spring Integration 7.0.4! |
2.1 与 2.2 版本之间的变更
新组件
版本 2.2 添加了许多新组件。
RedisStore入站和出站通道适配器
Spring Integration 现在拥有 RedisStore 个入站和出站通道适配器,允许您向 Redis 集合写入和读取 Message 个有效负载。
更多信息,请参阅 RedisStore 出站通道适配器 和 Redis Store 入站通道适配器。
MongoDB 入站和出站通道适配器
Spring Integration 现在提供了 MongoDB 的入站和出站通道适配器,允许您向 MongoDB 文档存储写入和读取 Message 有效载荷。
更多信息,请参见 MongoDB 出站通道适配器 和 MongoDB 入站通道适配器。
常规变更
本节描述了从版本 2.1 到版本 2.2 的一般性变更。
为端点添加行为
向轮询器添加<advice-chain/>的功能已经存在了一段时间。
然而,此功能所引入的行为会影响整个集成流程。
它并未解决为单个端点添加(例如)重试机制的能力。
2.2 版本引入了将<request-handler-advice-chain/>连接到多个端点的功能。
此外,我们为此目的添加了三个标准建议类:
-
MessageHandlerRetryAdvice -
MessageHandlerCircuitBreakerAdvice -
ExpressionEvaluatingMessageHandlerAdvice
有关更多信息,请参阅 向端点添加行为。
事务同步与伪事务
轮询器现在可以参与 Spring 的事务同步功能。 这使得能够根据事务是提交还是回滚,来同步诸如通过入站通道适配器重命名文件等操作。
此外,当不存在“真实”事务时,您可以通过使用 PseudoTransactionManager 来启用这些功能。
有关更多信息,请参阅 事务同步。
文件适配器:改进了文件覆盖和追加处理
使用文件出站通道适配器或文件出站网关时,您可以使用一个新的mode属性。
在 Spring Integration 2.2 之前,如果目标文件已存在,则会被替换。
现在您可以指定以下选项:
-
REPLACE(默认) -
APPEND -
FAIL -
IGNORE
有关更多信息,请参阅 处理现有目标文件。
Spring-AMQP 1.1
Spring Integration 现在使用 Spring AMQP 1.1。 这使以下功能可在 Spring Integration 应用程序中使用:
-
用于出站网关的固定回复队列
-
HA(镜像)队列
-
发布者确认
-
返回的消息
-
支持死信交换器和死信队列
JDBC 支持 - 存储过程组件
SpEL 支持
在使用 Spring Integration JDBC Adapter 的存储过程组件时,现在可以通过使用 Spring 表达式语言 (SpEL) 来提供存储过程名称或存储函数名称。
这样做允许您指定在运行时调用的存储过程。 例如,您可以通过消息头提供想要执行的存储过程名称。 更多信息,请参见 存储过程。
JDBC 支持:特定通道的消息存储实现
我们添加了一种新的消息通道特定消息存储实现,通过使用数据库特定的 SQL 查询提供了更具可扩展性的解决方案。 有关更多信息,请参阅 备份消息通道。
有序关闭
我们向IntegrationMBeanExporter添加了一个名为stopActiveComponents()的方法。
它允许Spring Integration应用程序以有序的方式关闭,禁止新的入站消息进入某些适配器,并等待一段时间以允许正在处理的消息完成。
ObjectToJsonTransformer
默认情况下,ObjectToJsonTransformer现在将content-type标头设置为application/json。
有关更多信息,请参阅转换器。
HTTP 支持
通过 HTTP 进行 Java 序列化默认不再启用。
此前,当在 expected-response-type 对象上设置 Serializable 时,Accept 头部未能正确设置。
我们已更新 SerializingHttpMessageConverter,将 Accept 头部设置为 application/x-java-serialized-object。
然而,由于这可能导致与现有应用程序不兼容,我们决定不再自动将此转换器添加到 HTTP 端点。
如果您希望使用 Java 序列化,需要通过使用 message-converters 属性(在 XML 配置中)或 setMessageConverters() 方法(在 Java 中),将 SerializingHttpMessageConverter 添加到相应的端点。
或者,您可能希望考虑使用 JSON。
它通过在类路径中包含 Jackson 来启用。