4.1 和 4.2 之间的更改

有关可能影响您应用程序的重要更改,请参阅迁移指南。您可以在维基上找到所有版本(从 2.1 开始)的迁移指南。

新组件

4.2 版添加了许多新组件。

主要管理/JMX 重构

我们添加了一个新的 MetricsFactory 策略接口。此更改与 JMX 和管理基础设施中的其他更改一起,提供了对管理配置和运行时性能的更多控制。

但是,这对于(某些)用户环境具有一些重要影响。

有关完整详细信息,请参阅指标和管理以及JMX 改进

MongoDB 元数据存储

现在可以使用 MongoDbMetadataStore。有关更多信息,请参阅MongoDB 元数据存储

SecuredChannel 注解

我们引入了 @SecuredChannel 注解,取代了已弃用的 ChannelSecurityInterceptorFactoryBean。有关更多信息,请参阅Spring Integration 中的安全性

SecurityContext 传播

我们引入了 SecurityContextPropagationChannelInterceptor 用于将 SecurityContext 从一个消息流的线程传播到另一个线程。有关更多信息,请参阅Spring Integration 中的安全性

FileSplitter

在 4.1.2 中,我们添加了 FileSplitter,它将文本文件拆分为行。它现在在 int-file: 命名空间中具有完全支持。有关更多信息,请参阅文件拆分器

Zookeeper 支持

我们为框架添加了 Zookeeper 支持,以帮助在集群或多主机环境中运行。此更改会影响以下功能

  • ZookeeperMetadataStore

  • ZookeeperLockRegistry

  • Zookeeper Leader 选举

有关更多信息,请参阅Zookeeper 支持

线程屏障

一个新的线程 <int:barrier/> 组件可用,允许线程暂停,直到发生某个异步事件。有关更多信息,请参阅线程屏障

STOMP 支持

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

编解码器

引入了一个新的 Codec 抽象,用于将对象编码和解码为 byte[]。我们添加了一个使用 Kryo 的实现。我们还添加了基于编解码器的转换器和消息转换器。有关更多信息,请参阅编解码器

消息 PreparedStatement Setter

一个新的 MessagePreparedStatementSetter 函数式接口回调可用于 JdbcMessageHandler (<int-jdbc:outbound-gateway><int-jdbc:outbound-channel-adapter>),作为使用 SqlParameterSourceFactory 填充 PreparedStatement 参数并带上 requestMessage 上下文的替代方案。有关更多信息,请参阅出站通道适配器

一般更改

本节描述了从 4.1 版到 4.2 版的一般更改。

WireTap

作为现有 selector 属性的替代方案,<wire-tap/> 元素现在支持 selector-expression 属性。

文件更改

有关这些更改的更多信息,请参阅文件支持

附加新行

<int-file:outbound-channel-adapter><int-file:outbound-gateway> 现在支持 append-new-line 属性。如果设置为 true,则在写入消息后向文件附加新行。默认属性值为 false

忽略隐藏文件

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

写入 InputStream 有效负载

FileWritingMessageHandler 现在也接受 InputStream 作为有效的消息有效负载类型。

HeadDirectoryScanner

您现在可以将 HeadDirectoryScanner 与其他 FileListFilter 实现一起使用。

最后修改过滤器

我们添加了 LastModifiedFileListFilter

Watch Service 目录扫描器

我们添加了 WatchServiceDirectoryScanner

持久文件列表过滤器更改

AbstractPersistentFileListFilter 有一个新属性 (flushOnUpdate),当设置为 true 时,如果元数据存储实现了 Flushable(例如,PropertiesPersistingMetadataStore),则会调用 flush()

类包更改

我们将 ScatterGatherHandler 类从 org.springframework.integration.handler 移动到 org.springframework.integration.scattergather

TCP 更改

本节描述了 Spring Integration TCP 功能的一般更改。

TCP 序列化器

TCP Serializers 不再 flush() OutputStream。现在由 TcpNxxConnection 类完成。如果您在代码中直接使用序列化器,则可能必须 flush() OutputStream

服务器套接字异常

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

TCP 服务器端口

如果您配置 TCP 服务器套接字工厂以侦听随机端口,您现在可以使用 getPort() 获取操作系统选择的实际端口。getServerSocketAddress() 也可用。

有关更多信息,请参阅“TCP 连接工厂”。

TCP 网关远程超时

TcpOutboundGateway 现在支持 remote-timeout-expression 作为现有 remote-timeout 属性的替代方案。这允许根据每个消息设置超时。

此外,remote-timeout 不再默认为与 reply-timeout 相同的值,后者具有完全不同的含义。

有关更多信息,请参阅.TCP 出站网关属性

TCP SSLSession 可用于头部映射

TcpConnection 实现现在支持 getSslSession(),让您可以从会话中提取信息以添加到消息头部。有关更多信息,请参阅IP 消息头部

TCP 事件

每当发生关联异常时(例如向不存在的套接字发送消息),都会发布新事件。

TcpConnectionEventListeningMessageProducer 已弃用。请改用通用事件适配器。

有关更多信息,请参阅TCP 连接事件

@InboundChannelAdapter 更改

以前,入站通道适配器上的 @PollermaxMessagesPerPoll 属性默认为 -1(无限)。这与 <inbound-channel-adapter/> 的 XML 配置不一致,后者默认为 1。该注解现在将此属性默认为 1

API 更改

o.s.integration.util.FunctionIterator 现在需要一个 o.s.integration.util.Function 而不是 reactor.function.Function。这是为了消除对 Reactor 的不必要的硬依赖。任何使用此迭代器的都需要更改导入。

Reactor 仍然支持 Promise 网关等功能。对于不需要它的用户,已删除依赖项。

JMS 更改

本节描述了 Spring Integration TCP 功能的一般更改。

回复侦听器延迟初始化

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

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

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

有关更多信息,请参阅消息驱动通道适配器入站网关

默认确认模式

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

有关更多信息,请参阅消息驱动通道适配器入站网关

共享订阅

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

有关更多信息,请参阅JMS 支持

条件轮询器

我们现在为动态轮询提供了更大的灵活性。

有关更多信息,请参阅消息源的条件轮询器

AMQP 更改

本节描述了 Spring Integration AMQP 功能的一般更改。

发布者确认

<int-amqp:outbound-gateway> 现在支持 confirm-correlation-expressionconfirm-ack-channelconfirm-nack-channel 属性(其目的与 <int-amqp:outbound-channel-adapter> 类似)。

关联数据

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

入站网关属性

<int-amqp:inbound-gateway> 现在公开了 amqp-template 属性,以允许对回复 RabbitTemplate 的外部 bean 进行更多控制。您还可以提供自己的 AmqpTemplate 实现。此外,如果请求消息没有 replyTo 属性,您可以使用 default-reply-to

有关更多信息,请参阅AMQP 支持

XPath 拆分器改进

XPathMessageSplitter (<int-xml:xpath-splitter>) 现在允许为内部 javax.xml.transform.Transformer 配置 output-properties,并支持 XPath 评估 org.w3c.dom.NodeList 结果的 Iterator 模式(默认为 true)。

有关更多信息,请参阅拆分 XML 消息

HTTP 更改

本节描述了 Spring Integration HTTP 功能的一般更改。

CORS

HTTP 入站端点 (<int-http:inbound-channel-adapter><int-http:inbound-gateway>) 现在允许配置跨域资源共享 (CORS)。

有关更多信息,请参阅跨域资源共享 (CORS) 支持

入站网关超时

您可以配置 HTTP 入站网关在请求超时时返回您指定的状态码。现在默认为 500 Internal Server Error 而不是 200 OK

有关更多信息,请参阅响应状态码

表单数据

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

网关更改

本节描述了 Spring Integration 网关功能的一般更改。

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

使用 Java 8 时,网关方法现在可以返回 CompletableFuture<?>。有关更多信息,请参阅CompletableFuture

MessagingGateway 注解

请求和回复超时属性现在是 String 而不是 Long,以允许使用属性占位符或 SpEL 进行配置。请参阅@MessagingGateway 注解

聚合器更改

本节描述了 Spring Integration 聚合器功能的一般更改。

聚合器性能

此版本包括聚合组件(聚合器、重新排序器等)的一些性能改进,通过在释放消息时更有效地从组中删除消息。已将新方法 (removeMessagesFromGroup) 添加到消息存储。设置 removeBatchSize 属性(默认值:100)以调整每次操作中删除的消息数量。目前,JDBC、Redis 和 MongoDB 消息存储支持此属性。

输出消息组处理器

当为聚合器使用 ref 或内部 bean 时,您现在可以直接绑定 MessageGroupProcessor。此外,我们添加了一个 SimpleMessageGroupProcessor,它返回组中的消息集合。当输出处理器生成 Message<?> 集合时,聚合器会单独释放这些消息。配置 SimpleMessageGroupProcessor 使聚合器成为消息屏障,其中消息被 удержи直到它们全部到达,然后单独释放。有关更多信息,请参阅聚合器

FTP 和 SFTP 更改

本节描述了 Spring Integration FTP 和 SFTP 功能的一般更改。

入站通道适配器

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

网关部分结果

当您使用 FTP 或 SFTP 出站网关操作多个文件(使用 mgetmput)时,可能会在请求部分完成后发生异常。如果发生此类情况,则会抛出包含部分结果的 PartialSuccessException。有关更多信息,请参阅FTP 出站网关SFTP 出站网关

委派会话工厂

我们添加了一个委派会话工厂,可以根据某些线程上下文值选择特定的会话工厂。

有关更多信息,请参阅委派会话工厂委派会话工厂

默认 Sftp 会话工厂

以前,DefaultSftpSessionFactory 无条件地允许连接到未知主机。现在这可以配置(默认值:false)。

除非 allowUnknownKeys 属性为 true(默认值:false),否则工厂现在需要配置的 knownHosts 文件。

消息会话回调

我们引入了 MessageSessionCallback<F, T>,用于在 <int-(s)ftp:outbound-gateway/> 中使用 requestMessage 上下文执行任何自定义 Session 操作。

有关更多信息,请参阅使用 MessageSessionCallbackMessageSessionCallback

Websocket 更改

我们向 ServerWebSocketContainer 添加了 WebSocketHandlerDecoratorFactory 支持,以允许对内部 WebSocketHandler 进行链式定制。有关更多信息,请参阅WebSockets 命名空间支持

应用程序事件适配器更改

ApplicationEvent 适配器现在可以使用 payload 作为 event,以直接允许省略自定义 ApplicationEvent 扩展。为此,我们在 <int-event:outbound-channel-adapter> 上引入了 publish-payload 布尔属性。有关更多信息,请参阅Spring ApplicationEvent 支持

© . This site is unofficial and not affiliated with VMware.