对于最新的稳定版本,请使用 Spring Integration 6.4.0spring-doc.cn

4.1 和 4.2 之间的更改

请参阅迁移指南,了解可能影响应用程序的重要更改。 您可以在 wiki 上找到 2.1 之前所有版本的迁移指南。spring-doc.cn

新组件

版本 4.2 添加了许多新组件。spring-doc.cn

主要管理/JMX 返工

我们添加了一个新的策略界面。 此更改以及 JMX 和管理基础结构中的其他更改,提供了对管理配置和运行时性能的更多控制。MetricsFactoryspring-doc.cn

但是,这对 (某些) 用户环境有一些重要影响。spring-doc.cn

有关完整详细信息,请参阅指标和管理 和 JMX 改进spring-doc.cn

MongoDB 元数据存储

现已推出。 有关更多信息,请参阅 MongoDB 元数据存储MongoDbMetadataStorespring-doc.cn

SecuredChannel 注解

我们引入了注释,替换了已弃用的 . 有关更多信息,请参阅 Spring Integration 中的安全性@SecuredChannelChannelSecurityInterceptorFactoryBeanspring-doc.cn

SecurityContext增殖

我们引入了 for the propagation from one message flow's thread to another message flow. 有关更多信息,请参阅 Spring Integration 中的安全性SecurityContextPropagationChannelInterceptorSecurityContextspring-doc.cn

FileSplitter 文件拆分器

在 4.1.2 中,我们添加了 ,它将文本文件拆分为几行。 现在,它在命名空间中得到了完全支持。 有关更多信息,请参阅 File SplitterFileSplitterint-file:spring-doc.cn

Zookeeper 支持

我们向框架添加了 Zookeeper 支持,以便在集群或多主机环境中运行时提供帮助。 此更改会影响以下功能:spring-doc.cn

有关更多信息,请参阅 Zookeeper 支持spring-doc.cn

线程屏障

新的线程组件可用,允许线程暂停,直到发生某些异步事件。 有关更多信息,请参见 Thread Barrier<int:barrier/>spring-doc.cn

STOMP 支持

我们向框架添加了 STOMP 支持作为入站和出站通道适配器对。 有关更多信息,请参阅 STOMP 支持spring-doc.cn

Codec

引入了一种新的抽象,用于将对象编码和解码到 和 从 。 我们添加了一个使用 Kryo 的实现。 我们还添加了基于编解码器的转换器和消息转换器。 有关更多信息,请参阅 编解码器Codecbyte[]spring-doc.cn

消息 PreparedStatement Setter

( 和 ) 提供了新的函数接口回调,作为使用上下文填充 上的参数的替代方法。 有关更多信息,请参阅 Outbound Channel AdapterMessagePreparedStatementSetterJdbcMessageHandler<int-jdbc:outbound-gateway><int-jdbc:outbound-channel-adapter>SqlParameterSourceFactoryPreparedStatementrequestMessagespring-doc.cn

一般更改

本节介绍从版本 4.1 到版本 4.2 的一般更改。spring-doc.cn

窃听

作为 existing 属性的替代方法,该元素现在支持该属性。selector<wire-tap/>selector-expressionspring-doc.cn

文件更改

有关这些更改的更多信息,请参阅文件支持spring-doc.cn

添加新行

和 现在支持一个属性。 如果设置为 ,则在写入消息后,会向文件附加一个新行。 默认属性值为 .<int-file:outbound-channel-adapter><int-file:outbound-gateway>append-new-linetruefalsespring-doc.cn

忽略隐藏文件

我们添加了 to 属性,让您设置是否从源目录中选取隐藏文件。 它默认为 .ignore-hidden<int-file:inbound-channel-adapter>truespring-doc.cn

写入有效负载InputStream

现在还接受作为有效的消息负载类型。FileWritingMessageHandlerInputStreamspring-doc.cn

HeadDirectoryScanner

现在,您可以将 与其他实现一起使用。HeadDirectoryScannerFileListFilterspring-doc.cn

上次修改的过滤器

我们添加了 .LastModifiedFileListFilterspring-doc.cn

监视 Service Directory Scanner

我们添加了 .WatchServiceDirectoryScannerspring-doc.cn

持久文件列表筛选器更改

这具有一个新属性 () ,当设置为 时,如果它实现(例如,),则调用元数据存储。AbstractPersistentFileListFilterflushOnUpdatetrueflush()FlushablePropertiesPersistingMetadataStorespring-doc.cn

类套餐更改

我们将类从 移动到 。ScatterGatherHandlerorg.springframework.integration.handlerorg.springframework.integration.scattergatherspring-doc.cn

TCP 更改

本节描述了对 Spring 集成 TCP 功能的一般更改。spring-doc.cn

TCP 序列化程序

TCP 不再是 . 现在,这由 classes 完成。 如果直接在代码中使用序列化程序,则可能需要将 .Serializersflush()OutputStreamTcpNxxConnectionflush()OutputStreamspring-doc.cn

服务器套接字异常

TcpConnectionServerExceptionEvent现在,每当 TCP 服务器套接字(也添加到 4.1.3 和 4.0.7)上发生意外异常时,都会发布实例。 有关更多信息,请参阅 TCP 连接事件spring-doc.cn

TCP 服务器端口

如果将 TCP 服务器套接字工厂配置为侦听随机端口,则现在可以使用 获取 OS 选择的实际端口。 也可用。getPort()getServerSocketAddress()spring-doc.cn

有关更多信息,请参阅“TCP 连接工厂”。spring-doc.cn

TCP 网关远程超时

现在支持作为 existing 属性的替代项。 这允许根据每条消息设置超时。TcpOutboundGatewayremote-timeout-expressionremote-timeoutspring-doc.cn

此外,the 不再默认为 与 相同的值,这具有完全不同的含义。remote-timeoutreply-timeoutspring-doc.cn

TCP SSLSession 可用于标头映射

TcpConnectionimplementations 现在支持让您从 session 中提取信息以添加到 message headers。 有关更多信息,请参阅 IP 消息报头getSslSession()spring-doc.cn

TCP 事件

现在,每当发生关联异常时(例如,将消息发送到不存在的套接字),都会发布新事件。spring-doc.cn

已弃用。 请改用泛型事件适配器。TcpConnectionEventListeningMessageProducerspring-doc.cn

有关更多信息,请参阅 TCP 连接事件spring-doc.cn

@InboundChannelAdapter变化

以前,入站通道适配器将属性默认为 (infinity)。 这与 的 XML 配置不一致,默认为 . 注解现在将此属性默认为 .@PollermaxMessagesPerPoll-1<inbound-channel-adapter/>11spring-doc.cn

API 变更

o.s.integration.util.FunctionIterator现在需要 a 而不是 . 这样做是为了消除对 Reactor 的不必要的硬依赖。 此迭代器的任何使用都需要更改导入。o.s.integration.util.Functionreactor.function.Functionspring-doc.cn

网关等功能仍支持 Reactor。 对于不需要依赖项的用户,已删除依赖项。Promisespring-doc.cn

JMS 更改

本节描述了对 Spring 集成 TCP 功能的一般更改。spring-doc.cn

Reply 侦听器延迟初始化

您现在可以将 JMS 出站网关中的回复侦听器配置为按需初始化并在空闲期后停止,而不是由网关的生命周期控制。 有关更多信息,请参阅出站网关spring-doc.cn

消息驱动端点中的转换错误

现在 用于转换错误。 在以前的版本中,它们会导致事务回滚和消息重新传递。error-channelspring-doc.cn

有关更多信息,请参阅消息驱动的通道适配器入站网关spring-doc.cn

默认确认模式

当使用隐式定义的 时,默认值现在是 。 我们建议在使用此容器时使用,以避免消息丢失。 此默认值现在适用于消息驱动的入站适配器和入站网关。 它已经是 JMS 支持的通道的默认通道。DefaultMessageListenerContaineracknowledgetransactedtransactedspring-doc.cn

有关更多信息,请参阅消息驱动的通道适配器入站网关spring-doc.cn

共享订阅

我们向消息驱动端点添加了对共享订阅 (JMS 2.0) 的命名空间支持,并将 . 以前,您必须将侦听器容器连接为声明才能使用共享连接。<int-jms:publish-subscribe-channel><bean/>spring-doc.cn

有关更多信息,请参阅 JMS 支持spring-doc.cn

条件轮询器

现在,我们为动态轮询提供了更大的灵活性。spring-doc.cn

有关更多信息,请参见Message Sources 的条件轮询器spring-doc.cn

AMQP 更改

本节描述了对 Spring 集成 AMQP 功能的一般更改。spring-doc.cn

发布者确认

现在支持 、 和 属性(其用途类似于 )。<int-amqp:outbound-gateway>confirm-correlation-expressionconfirm-ack-channelconfirm-nack-channel<int-amqp:outbound-channel-adapter>spring-doc.cn

关联数据

对于出站通道适配器和入站网关,如果关联数据是 a ,则它将成为 ack 或 nack 通道上消息的基础,并添加了额外的 Headers。 以前,任何关联数据(包括 )都作为 ack 或 nack 消息的有效负载返回。Message<?>Message<?>spring-doc.cn

入站网关属性

现在公开了该属性,以允许对 reply 的外部 bean 进行更多控制。 您还可以提供自己的实施。 此外,如果请求消息没有属性,则可以使用 if。<int-amqp:inbound-gateway>amqp-templateRabbitTemplateAmqpTemplatedefault-reply-toreplyTospring-doc.cn

有关更多信息,请参阅 AMQP 支持spring-doc.cn

XPath Splitter 改进

() 现在允许对 internal 进行配置,并支持 XPath 评估结果的模式(默认为 )。XPathMessageSplitter<int-xml:xpath-splitter>output-propertiesjavax.xml.transform.TransformerIteratortrueorg.w3c.dom.NodeListspring-doc.cn

有关更多信息,请参阅拆分 XML 消息spring-doc.cn

HTTP 更改

本节描述了对 Spring 集成 HTTP 功能的一般更改。spring-doc.cn

CORS

HTTP 入站终端节点( 和 )现在允许 跨域资源共享 (CORS) 的配置。<int-http:inbound-channel-adapter><int-http:inbound-gateway>spring-doc.cn

入站网关超时

您可以配置 HTTP 入站入口方式,以便在请求超时时返回您指定的状态代码。 默认值现在为 ,而不是 。500 Internal Server Error200 OKspring-doc.cn

有关更多信息,请参阅响应状态代码spring-doc.cn

表单数据

我们添加了代理请求的文档。 有关更多信息,请参阅 HTTP 支持multipart/form-dataspring-doc.cn

网关更改

本节描述了对 Spring Integration Gateway 功能的一般更改。spring-doc.cn

[[gateway-methods-can-return-completablefuture<?>]] ==== 网关方法可以返回CompletableFuture<?>spring-doc.cn

使用 Java 8 时,网关方法现在可以返回 . 有关更多信息,请参见 CompletableFutureCompletableFuture<?>spring-doc.cn

MessagingGateway 注释

请求和回复超时属性现在是允许使用属性占位符或 SPEL 进行配置。 请参见@MessagingGateway注释StringLongspring-doc.cn

Aggregator 更改

本节描述了对 Spring 集成聚合器功能的一般更改。spring-doc.cn

聚合商性能

此版本包括聚合组件(聚合器、resequencer 等)的一些性能改进,方法是在发布消息时更有效地从组中删除消息。 新方法 () 已添加到邮件存储中。 设置属性 (default: ) 以调整每个操作中删除的消息数。 目前,JDBC、Redis 和 MongoDB 消息存储支持此属性。removeMessagesFromGroupremoveBatchSize100spring-doc.cn

输出消息组处理器

当对聚合器使用 或 inner bean 时,您现在可以直接绑定 . 此外,我们还添加了一个 ,用于返回组中的消息集合。 当输出处理器生成 的集合时,聚合器会单独释放这些消息。 配置 使聚合器成为消息屏障,消息被保留,直到它们全部到达,然后单独发布。 有关更多信息,请参阅 AggregatorrefMessageGroupProcessorSimpleMessageGroupProcessorMessage<?>SimpleMessageGroupProcessorspring-doc.cn

FTP 和 SFTP 更改

本节描述了对 Spring 集成 FTP 和 SFTP 功能的一般更改。spring-doc.cn

入站通道适配器

现在,您可以在入站通道适配器上指定 a,以便在运行时确定目录。 有关更多信息,请参阅 FTP/FTPS 适配器SFTP 适配器remote-directory-expressionspring-doc.cn

Gateway 部分结果

当您使用 FTP 或 SFTP 出站网关对多个文件进行操作(使用 和 )时,异常可能会 在请求的一部分完成后发生。 如果出现此类情况,则会引发包含部分结果的 a。 有关更多信息,请参阅 FTP 出站网关SFTP 出站网关mgetmputPartialSuccessExceptionspring-doc.cn

委派 Session Factory

我们添加了一个委托会话工厂,允许根据某些线程上下文值选择特定的会话工厂。spring-doc.cn

有关更多信息,请参阅委派 Session Factory委派 Session Factoryspring-doc.cn

默认 sftp 会话工厂

以前,无条件允许连接到未知主机。 这现在可以配置 (default: )。DefaultSftpSessionFactoryfalsespring-doc.cn

工厂现在需要配置的 , 文件,除非该属性为 (default: )。knownHostsallowUnknownKeystruefalsespring-doc.cn

Message Session 回调

我们引入了 ,以使用 .MessageSessionCallback<F, T>SessionrequestMessage<int-(s)ftp:outbound-gateway/>spring-doc.cn

Websocket 更改

我们添加了对 的支持,以允许对内部 . 有关更多信息,请参阅 WebSockets 命名空间支持WebSocketHandlerDecoratorFactoryServerWebSocketContainerWebSocketHandlerspring-doc.cn

应用程序事件适配器更改

适配器现在可以作为直接允许省略自定义扩展进行操作。 为此,我们引入了 boolean 属性。 有关更多信息,请参见Spring ApplicationEvent SupportApplicationEventpayloadeventApplicationEventpublish-payload<int-event:outbound-channel-adapter>spring-doc.cn