对于最新的稳定版本,请使用 Spring Integration 6.4.0! |
2.1 和 2.2 之间的更改
新组件
版本 2.2 添加了许多新组件。
RedisStore
入站和出站通道适配器
Spring 集成现在具有RedisStore
入站和出站通道适配器,允许您写入和读取Message
与 Redis 集合之间的有效负载。
有关更多信息,请参阅 RedisStore 出站通道适配器和 Redis Store 入站通道适配器。
MongoDB 入站和出站通道适配器
Spring 集成现在具有 MongoDB 入站和出站通道适配器,允许您写入和读取Message
payloads 来往和从 MongoDB 文档存储。
有关更多信息,请参阅 MongoDB 出站通道适配器和 MongoDB 入站通道适配器。
一般更改
本节介绍从版本 2.1 到版本 2.2 的一般更改。
向终端节点添加行为
添加<advice-chain/>
to a poller 已经有一段时间了。
但是,由此添加的行为会影响整个集成流程。
它没有解决向单个终端节点添加(例如)重试的功能。
2.2 版本引入了<request-handler-advice-chain/>
到许多端点。
此外,为此,我们添加了三个标准建议类:
-
MessageHandlerRetryAdvice
-
MessageHandlerCircuitBreakerAdvice
-
ExpressionEvaluatingMessageHandlerAdvice
有关更多信息,请参阅向终端节点添加行为。
事务同步和伪事务
Poller 现在可以参与 Spring 的 Transaction Synchronization 功能。 这允许同步诸如通过入站通道适配器重命名文件之类的作,具体取决于事务是提交还是回滚。
此外,您可以在不存在 “真实” 交易时启用这些功能,方法是PseudoTransactionManager
.
有关更多信息,请参阅事务同步。
文件适配器:改进的文件覆盖和附加处理
使用文件出站通道适配器或文件出站网关时,您可以使用新的mode
财产。
在 Spring Integration 2.2 之前,目标文件在存在时被替换。
现在,您可以指定以下选项:
-
REPLACE
(默认) -
APPEND
-
FAIL
-
IGNORE
有关更多信息,请参阅处理现有目标文件。
已将 reply-timeout 添加到更多出站网关
XML Namespace 支持将 reply-timeout 属性添加到以下出站网关:
-
AMQP 出站网关
-
文件出站网关
-
FTP 出站网关
-
SFTP 出站网关
-
WS 出站网关
弹簧-AMQP 1.1
Spring 集成现在使用 Spring AMQP 1.1。 这使得可以在 Spring 集成应用程序中使用多个功能,包括以下内容:
-
出站网关的固定回复队列
-
HA(镜像)队列
-
发布者确认
-
返回的消息
-
支持死信交换和死信队列
JDBC 支持 - 存储过程组件
SPEL 支持
使用 Spring 集成 JDBC 适配器的存储过程组件时,您现在可以使用 Spring 表达式语言 (SpEL) 提供存储过程名称或存储函数名称。
这样做可以指定要在运行时调用的存储过程。 例如,您可以提供要通过消息标头执行的存储过程名称。 有关详细信息,请参阅存储过程。
JDBC 支持:特定于通道的消息存储实现
我们添加了一个新的特定于消息通道的消息存储实现,使用特定于数据库的 SQL 查询提供更具可扩展性的解决方案。 有关更多信息,请参阅支持消息通道。
有序关机
我们添加了一个名为stopActiveComponents()
到IntegrationMBeanExporter
.
它允许以有序的方式关闭 Spring 集成应用程序,不允许新的入站消息发送到某些适配器,并等待一段时间以允许正在进行的消息完成。
ObjectToJsonTransformer
默认情况下,ObjectToJsonTransformer
现在将content-type
header 设置为application/json
.
有关更多信息,请参阅 Transformer。
HTTP 支持
默认情况下,不再启用基于 HTTP 的 Java 序列化。
以前,在设置expected-response-type
在Serializable
object、Accept
标头未正确设置。
我们更新了SerializingHttpMessageConverter
要设置Accept
header 设置为application/x-java-serialized-object
.
但是,由于这可能会导致与现有应用程序不兼容,因此我们决定不再自动将此转换器添加到 HTTP 端点。
如果你想使用 Java 序列化,你需要添加SerializingHttpMessageConverter
到相应的终端节点,方法是使用message-converters
属性(当您使用 XML 配置时)或使用setMessageConverters()
方法(在 Java 中)。
或者,您可能希望考虑改用 JSON。
它是通过使用Jackson
在 Classpath 上。