此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Integration 6.5.1spring-doc.cadn.net.cn

5.0 和 5.1 之间的更改

新组件

以下组件是 5.1 中的新增组件:spring-doc.cadn.net.cn

AmqpDedicatedChannelAdvice

改进的功能支持

java.util.function接口现在改进了框架组件中的集成支持。此外,Kotlin lambda 现在可用于处理程序和源方法。spring-doc.cadn.net.cn

@LongRunningTest

一个 JUnit 5@LongRunningTest提供条件注释以检查RUN_LONG_INTEGRATION_TESTS条目,值为true以确定是否应运行或跳过测试。spring-doc.cadn.net.cn

一般更改

在 5.1 版中进行了以下更改:spring-doc.cadn.net.cn

Java DSL

IntegrationFlowContext现在是一个接口,并且IntegrationFlowRegistrationIntegrationFlowContext.spring-doc.cadn.net.cn

一个新的logAndReply()引入运算符是为了方便您希望在请求-回复配置的流末尾进行日志记录时。这避免了与log()它被视为单向端流组件。spring-doc.cadn.net.cn

为任何NamedComponent集成流现在基于组件类型,以便可视化工具、日志分析器和指标收集器具有更好的可读性。spring-doc.cadn.net.cn

GenericHandler.handle()现在除了MessageHeaderstype 为第二个参数。spring-doc.cadn.net.cn

调度程序异常

捕获并重新引发的异常AbstractDispatcher现在更加一致:spring-doc.cadn.net.cn

  • 一个MessagingException任何类型的failedMessage属性被重新抛出,原封不动。spring-doc.cadn.net.cn

  • 所有其他异常都包装在MessageDeliveryException使用failedMessage属性集。spring-doc.cadn.net.cn

全球通道拦截器

全局通道拦截器现在适用于动态注册的通道,例如通过IntegrationFlowContext使用 Java DSL 或使用beanFactory.initializeBean(). 以前,在刷新应用程序上下文后创建 Bean 时,不会应用拦截器。spring-doc.cadn.net.cn

通道拦截器

ChannelInterceptor.postReceive()当没有收到消息时,不再调用;不再需要检查null Message<?>. 以前,调用了该方法。 如果你有一个依赖于先前行为的拦截器,请实现afterReceiveCompleted()相反,由于调用了该方法,因此无论是否收到消息。 此外,PolledAmqpChannelPolledJmsChannel以前没有调用afterReceiveCompleted()null;他们现在做到了。spring-doc.cadn.net.cn

ObjectToJsonTransformer

一个新的ResultType.BYTES模式为ObjectToJsonTransformer.spring-doc.cadn.net.cn

有关更多信息,请参阅 JSON 转换器。spring-doc.cadn.net.cn

集成流:生成的 Bean 名称

从版本 5.0.5 开始,为IntegrationFlow包括 Flow Bean 名称,后跟一个点作为前缀。 例如,如果流 Bean 的名称为flowBean,生成的 Bean 可能被命名为flowBean.generatedBean.spring-doc.cadn.net.cn

请参阅使用消息流以获取更多信息。spring-doc.cadn.net.cn

聚合器更改

如果groupTimeout的计算结果为负值,则聚合器现在会立即使组过期。 只null被视为对当前消息不执行任何作的信号。spring-doc.cadn.net.cn

一个新的popSequence属性已引入以允许(默认情况下)调用MessageBuilder.popSequenceDetails()用于输出消息。 还有一个AbstractAggregatingMessageGroupProcessor现在返回一个AbstractIntegrationMessageBuilder而不是整体Message用于优化。spring-doc.cadn.net.cn

有关详细信息,请参阅聚合器spring-doc.cadn.net.cn

@Publisher注释更改

从 5.1 版开始,您必须显式启用@PublisherAOP 功能,使用@EnablePublisher或使用<int:enable-publisher>child 元素<int:annotation-config>. 此外,proxy-target-classorder已添加用于调整ProxyFactory配置。spring-doc.cadn.net.cn

文件更改

如果您正在使用FileExistsMode.APPENDFileExistsMode.APPEND_NO_FLUSH你可以提供一个newFileCallback将在创建新文件时调用。 此回调接收新创建的文件和触发回调的消息。 例如,这可用于编写 CSV 标头。spring-doc.cadn.net.cn

FileReadingMessageSourcenow 不会检查和创建目录,直到其start()被称为。 因此,如果FileReadingMessageSourceautoStartup = false,则在应用程序启动期间没有针对文件系统的故障。spring-doc.cadn.net.cn

有关更多信息,请参阅文件支持spring-doc.cadn.net.cn

AMQP 更改

我们已经使IDTimestamp标头映射更改DefaultAmqpHeaderMapper. 有关详细信息,请参阅 AMQP 消息头底部附近的注释。spring-doc.cadn.net.cn

contentTypeheader 现在已正确映射为常规标头映射中的条目。 有关详细信息,请参阅 contentType 标头spring-doc.cadn.net.cn

从版本 5.1.3 开始,如果在使用手动确认时发生消息转换异常,并且定义了错误通道,则有效负载是ManualAckListenerExecutionFailedException加上channeldeliveryTag性能。 这使错误流能够确认/nack原始消息。 有关详细信息,请参阅入站消息转换spring-doc.cadn.net.cn

JDBC 更改

令人困惑max-rows-per-pollJDBC Inbound Channel Adapter 和 JDBC Outbound Gateway 上的属性已被弃用,取而代之的是新引入的max-rows财产。spring-doc.cadn.net.cn

JdbcMessageHandler现在支持batchUpdate当请求消息的有效负载是Iterable类型。spring-doc.cadn.net.cn

的索引INT_CHANNEL_MESSAGE表(对于JdbcChannelMessageStore)已优化。 如果此类存储中有大型消息组,则可能希望更改索引。spring-doc.cadn.net.cn

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

FTP 和 SFTP 更改

一个RotatingServerAdvice现在可用于使用入站通道适配器轮询多个服务器和目录。 有关详细信息,请参阅入站通道适配器:轮询多个服务器和目录和入站通道适配器:轮询多个服务器和目录spring-doc.cadn.net.cn

此外,入站适配器localFilenameExpression实例可以包含#remoteDirectory变量,其中包含正在轮询的远程目录。 比较器的泛型类型(用于对流适配器的提取文件列表进行排序)已从Comparator<AbstractFileInfo<F>>Comparator<F>. 有关详细信息,请参阅 FTP 流式入站通道适配器SFTP 流式入站通道适配器spring-doc.cadn.net.cn

此外,现在可以为入站通道适配器的同步器提供Comparator. 这在使用maxFetchSize以限制检索到的文件。spring-doc.cadn.net.cn

CachingSessionFactory有一个新属性testSession当 true 时,会导致工厂执行test()Session从缓存中签出现有会话时。spring-doc.cadn.net.cn

有关详细信息,请参阅 SFTP 会话缓存FTP 会话缓存spring-doc.cadn.net.cn

出站网关 MPUT 命令现在支持包含文件或字符串集合的消息有效负载。 有关详细信息,请参阅 SFTP 出站网关FTP 出站网关spring-doc.cadn.net.cn

TCP 支持

使用 SSL 时,默认情况下,现在启用主机验证,以防止使用受信任证书进行中间人攻击。 有关详细信息,请参阅主机验证spring-doc.cadn.net.cn

此外,现在可以在DefaultTcpSSLContextSupport.spring-doc.cadn.net.cn

Twitter 支持

由于 Spring Social 项目已移至生命周期结束状态,因此 Spring Integration 中的 Twitter 支持已移至 Extensions 项目。 有关更多信息,请参阅 Spring Integration Social Twitterspring-doc.cadn.net.cn

JMS 支持

JmsSendingMessageHandler现在提供deliveryModeExpressiontimeToLiveExpression选项来确定 JMS 消息在运行时发送的相应 QoS 选项。 这DefaultJmsHeaderMapper现在允许映射入站JMSDeliveryModeJMSExpiration属性通过设置为true各自setMapInboundDeliveryMode()setMapInboundExpiration()选项。 当JmsMessageDrivenEndpointJmsInboundGateway已停止,则关联的侦听器容器现在已关闭;这将关闭其共享连接和任何消费者。 您可以将端点配置为恢复到以前的行为。spring-doc.cadn.net.cn

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

HTTP/WebFlux 支持

statusCodeExpression(和Function) 现在与RequestEntity<?>作为评估上下文的根对象,因此请求标头、方法、URI 和正文可用于目标状态代码计算。spring-doc.cadn.net.cn

有关更多信息,请参阅 HTTP 支持WebFlux 支持spring-doc.cadn.net.cn

JMX 更改

如果对象名称键值包含 Java 标识符(或句点)中允许的字符以外的任何字符,则现在会引用.). 例如org.springframework.integration:type=MessageChannel, name="input:foo.myGroup.errors". 这有一个副作用,即以前“允许”的带有此类字符的名称现在将被引用。 例如org.springframework.integration:type=MessageChannel, name="input#foo.myGroup.errors".spring-doc.cadn.net.cn

千分尺支架变更

现在,自定义框架创建的标准千分尺仪表变得更加简单。 有关更多信息,请参阅千分尺集成spring-doc.cadn.net.cn

集成图自定义

现在可以向IntegrationNode通过Function<NamedComponent, Map<String, Object>> additionalPropertiesCallbackIntegrationGraphServer. 有关更多信息,请参阅集成图spring-doc.cadn.net.cn

集成全局属性

现在可以在日志中打印集成全局属性(包括默认值),当DEBUG逻辑级别已打开org.springframework.integration类别。 有关详细信息,请参阅全局属性。spring-doc.cadn.net.cn

receiveTimeout@Poller

@Poller注释现在提供receiveTimeout方便的选项。 看使用@Poller注解了解更多信息。spring-doc.cadn.net.cn