对于最新的稳定版本,请使用 Spring Integration 6.5.1! |
2.1 和 2.2 之间的更改
新组件
2.2 版添加了许多新组件。
RedisStore
入站和出站通道适配器
Spring Integration 现在有RedisStore
入站和出站通道适配器,让您写入和读取Message
有效负载进出 Redis 集合。
有关详细信息,请参阅 RedisStore 出站通道适配器和 Redis Store 入站通道适配器。
MongoDB 入站和出站通道适配器
Spring Integration 现在具有 MongoDB 入站和出站通道适配器,允许您写入和读取Message
有效负载进出 MongoDB 文档存储。
有关更多信息,请参阅 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
有关详细信息,请参阅处理现有目标文件。
将 reply-timeout 添加到更多出站网关
XML 命名空间支持将 reply-timeout 属性添加到以下出站网关:
-
AMQP 出站网关
-
文件出站网关
-
FTP 出站网关
-
SFTP 出站网关
-
WS 出站网关
弹簧-AMQP 1.1
Spring Integration 现在使用 Spring AMQP 1.1。 这使得可以在 Spring Integration 应用程序中使用多个功能,包括:
-
出站网关的固定应答队列
-
HA(镜像)队列
-
发布商确认
-
返回的消息
-
支持死信交换和死信队列
JDBC 支持 - 存储过程组件
SpEL 支持
使用 Spring Integration JDBC Adapter 的存储过程组件时,您现在可以使用 Spring 表达式语言 (SpEL) 提供存储过程名称或存储函数名称。
这样做可以指定要在运行时调用的存储过程。 例如,可以提供要通过消息标头执行的存储过程名称。 有关详细信息,请参阅存储过程。
JDBC 支持:特定于通道的消息存储实现
我们添加了一个新的特定于消息通道的消息存储实现,使用特定于数据库的 SQL 查询提供了更具可扩展性的解决方案。 有关详细信息,请参阅支持消息通道。
有序关机
我们添加了一个名为stopActiveComponents()
到IntegrationMBeanExporter
.
它允许有序地关闭 Spring Integration 应用程序,不允许向某些适配器发送新的入站消息,并等待一段时间以允许正在进行的消息完成。
ObjectToJsonTransformer
默认情况下,ObjectToJsonTransformer
现在将content-type
header 到application/json
.
有关详细信息,请参阅 Transformer。
HTTP 支持
默认情况下,不再启用基于 HTTP 的 Java 序列化。
以前,当将expected-response-type
在Serializable
对象,则Accept
标头设置不正确。
我们更新了SerializingHttpMessageConverter
将Accept
header 到application/x-java-serialized-object
.
但是,由于这可能会导致与现有应用程序不兼容,因此我们决定不再自动将此转换器添加到 HTTP 端点。
如果您希望使用 Java 序列化,则需要将SerializingHttpMessageConverter
使用message-converters
属性(当您使用 XML 配置时)或使用setMessageConverters()
方法(在 Java 中)。
或者,您可能希望考虑使用 JSON。
它是通过拥有Jackson
在类路径上。