2.1 和 2.2 之间的变化

请参阅 迁移指南,了解可能影响您应用程序的重要更改。 您可以在 wiki 上找到所有版本(回溯到 2.1)的迁移指南。

新组件

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 启用这些功能。

有关更多信息,请参阅 事务同步

文件适配器:改进了文件覆盖和追加处理

当使用文件出站通道适配器或文件出站网关时,您可以使用新的 mode 属性。 在 Spring Integration 2.2 之前,目标文件如果存在则会被替换。 现在您可以指定以下选项:

  • REPLACE (默认)

  • APPEND

  • FAIL

  • IGNORE

有关更多信息,请参阅 处理现有目标文件

更多出站网关添加了回复超时

XML 命名空间支持为以下出站网关添加了 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 支持:出站网关

当您使用 JDBC 出站网关时,更新查询不再是强制性的。 您现在可以仅提供一个选择查询,并将请求消息作为参数源。

JDBC 支持:特定于通道的消息存储实现

我们添加了一个新的特定于消息通道的消息存储实现,通过使用特定于数据库的 SQL 查询提供更具可伸缩性的解决方案。 有关更多信息,请参阅 支持消息通道

有序关机

我们在 IntegrationMBeanExporter 中添加了一个名为 stopActiveComponents() 的方法。 它允许 Spring Integration 应用程序有序地关闭,禁止新的入站消息到达某些适配器,并等待一段时间以允许正在处理的消息完成。

JMS 出站网关改进

您现在可以将 JMS 出站网关配置为使用 MessageListener 容器来接收回复。 这样做可以提高网关的性能。

ObjectToJsonTransformer

默认情况下,ObjectToJsonTransformer 现在将 content-type 头设置为 application/json。 有关更多信息,请参阅 转换器

HTTP 支持

Java over HTTP 序列化不再默认启用。 以前,当在 Serializable 对象上设置 expected-response-type 时,Accept 头没有正确设置。 我们更新了 SerializingHttpMessageConverter 以将 Accept 头设置为 application/x-java-serialized-object。 但是,由于这可能导致与现有应用程序不兼容,我们决定不再自动将此转换器添加到 HTTP 端点。

如果您希望使用 Java 序列化,则需要通过使用 message-converters 属性(当您使用 XML 配置时)或使用 setMessageConverters() 方法(在 Java 中)将 SerializingHttpMessageConverter 添加到适当的端点。

或者,您可能希望考虑使用 JSON。 通过在类路径上放置 Jackson 即可启用它。