此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Integration 6.4.0spring-doc.cn

5.0 和 5.1 之间的更改

新组件

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

AmqpDedicatedChannelAdvice

改进的函数支持

现在,这些接口在 Framework 组件中具有改进的集成支持。 此外,Kotlin lambda 现在可用于处理程序和源方法。java.util.functionspring-doc.cn

@LongRunningTest

提供了 JUnit 5 条件注释,用于检查值为 of 的条目的环境或系统属性,以确定是应该运行还是跳过 test。@LongRunningTestRUN_LONG_INTEGRATION_TESTStruespring-doc.cn

一般更改

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

Java DSL

现在是接口,并且是 的内部接口。IntegrationFlowContextIntegrationFlowRegistrationIntegrationFlowContextspring-doc.cn

为方便起见,当您希望在请求-回复配置的流结束时记录时,引入了一个新运算符。 这避免了与 被视为单向端流分量的混淆。logAndReply()log()spring-doc.cn

现在,为集成流中的任何内容生成的 bean 名称都基于组件类型,以便可视化工具、日志分析器和指标收集器具有更好的可读性。NamedComponentspring-doc.cn

现在,第二个参数的 type 除外。GenericHandler.handle()MessageHeadersspring-doc.cn

Dispatcher 异常

捕获和重新引发的异常现在更加一致:AbstractDispatcherspring-doc.cn

  • 具有属性的任何类型的 A 都会原封不动地重新引发。MessagingExceptionfailedMessagespring-doc.cn

  • 所有其他异常都包装在 a 中,并设置了 property 。MessageDeliveryExceptionfailedMessagespring-doc.cn

以前:spring-doc.cn

  • 具有属性的任何类型的 A 都会原封不动地重新引发MessagingExceptionfailedMessagespring-doc.cn

  • 没有属性的 A 包装在设置了该属性的 a 中。MessagingExceptionfailedMessageMessagingExceptionfailedMessagespring-doc.cn

  • 其他实例被原封不动地重新抛出。RuntimeExceptionspring-doc.cn

  • 已检查的异常包装在 a 中,并设置了 属性。MessageDeliveryExceptionfailedMessagespring-doc.cn

全局通道拦截器

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

通道拦截器

ChannelInterceptor.postReceive()未收到消息时不再调用;不再需要检查 . 以前,该方法被调用。 如果你有一个依赖于先前行为的拦截器,请改为实现,因为无论是否收到消息,都会调用该方法。 此外,和 以前未使用 ;他们现在这样做了。nullMessage<?>afterReceiveCompleted()PolledAmqpChannelPolledJmsChannelafterReceiveCompleted()nullspring-doc.cn

ObjectToJsonTransformer

为 引入了一种新模式。ResultType.BYTESObjectToJsonTransformerspring-doc.cn

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

集成流:生成的 Bean 名称

从版本 5.0.5 开始,为 中的组件生成的 bean 名称包括 flow bean 名称,后跟一个点作为前缀。 例如,如果流 Bean 被命名为 ,则生成的 Bean 可能被命名为 。IntegrationFlowflowBeanflowBean.generatedBeanspring-doc.cn

有关更多信息,请参阅Working With Message Flowsspring-doc.cn

Aggregator 更改

如果 the 的计算结果为负值,则聚合商现在会立即使该组过期。 Only 被视为对当前消息不执行任何操作的信号。groupTimeoutnullspring-doc.cn

引入了一个新属性,以允许(默认情况下)为输出消息调用 a。 此外,现在返回 an 而不是整体进行优化。popSequenceMessageBuilder.popSequenceDetails()AbstractAggregatingMessageGroupProcessorAbstractIntegrationMessageBuilderMessagespring-doc.cn

有关更多信息,请参阅 Aggregatorspring-doc.cn

@Publisher 注释更改

从版本 5.1 开始,您必须通过使用 or using the child element on 显式打开 AOP 功能。 此外,还添加了 and 属性以调整配置。@Publisher@EnablePublisher<int:enable-publisher><int:annotation-config>proxy-target-classorderProxyFactoryspring-doc.cn

文件更改

如果您正在使用或可以提供 a 将在创建新文件时调用。 该回调接收新创建的文件和触发回调的消息。 例如,这可用于编写 CSV 标头。FileExistsMode.APPENDFileExistsMode.APPEND_NO_FLUSHnewFileCallbackspring-doc.cn

now 在调用之前不会检查并创建目录。 因此,如果 has 的 Inbound Channel Adapter 在应用程序启动期间文件系统不会出现故障。FileReadingMessageSourcestart()FileReadingMessageSourceautoStartup = falsespring-doc.cn

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

AMQP 更改

我们在 . 有关更多信息,请参阅 AMQP Message Headers 底部附近的注释。IDTimestampDefaultAmqpHeaderMapperspring-doc.cn

现在,该标题已正确映射为常规标题映射中的一个条目。 有关更多信息,请参阅 contentType HeadercontentTypespring-doc.cn

从版本 5.1.3 开始,如果在使用手动确认时发生消息转换异常,并且定义了错误通道,则有效负载为具有附加 和 属性的 a。 这使得错误流能够确认/nack 原始消息。 有关更多信息,请参阅 入站消息转换ManualAckListenerExecutionFailedExceptionchanneldeliveryTagspring-doc.cn

JDBC 更改

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

现在,当请求消息的有效负载是某种类型的实例时,它支持一项功能。JdbcMessageHandlerbatchUpdateIterablespring-doc.cn

表 (的 ) 的索引已得到优化。 如果您在此类存储中有大型消息组,则可能需要更改索引。INT_CHANNEL_MESSAGEJdbcChannelMessageStorespring-doc.cn

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

FTP 和 SFTP 更改

现在,A 可用于使用入站通道适配器轮询多个服务器和目录。 有关更多信息,请参见入站通道适配器:轮询多个服务器和目录入站通道适配器:轮询多个服务器和目录RotatingServerAdvicespring-doc.cn

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

此外,现在可以为入站通道适配器的同步器提供 . 这在 用于限制检索的文件时非常有用。ComparatormaxFetchSizespring-doc.cn

这有一个新属性,当 true 时,会导致工厂在从缓存中检出现有 session 时对 执行操作。CachingSessionFactorytestSessiontest()Sessionspring-doc.cn

有关更多信息,请参阅 SFTP 会话缓存和 FTP 会话缓存spring-doc.cn

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

TCP 支持

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

此外,现在可以在 .DefaultTcpSSLContextSupportspring-doc.cn

Twitter 支持

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

JMS 支持

现在提供 和 选项来确定 JMS 消息在运行时发送的相应 QoS 选项。 现在允许通过设置将入站和属性映射到相应的 and 选项。 当 或 停止时,关联的侦听器容器现在将关闭;这将关闭其共享连接和任何使用者。 您可以将终端节点配置为恢复到之前的行为。JmsSendingMessageHandlerdeliveryModeExpressiontimeToLiveExpressionDefaultJmsHeaderMapperJMSDeliveryModeJMSExpirationtruesetMapInboundDeliveryMode()setMapInboundExpiration()JmsMessageDrivenEndpointJmsInboundGatewayspring-doc.cn

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

HTTP/WebFlux 支持

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

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

JMX 更改

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

千分尺支持更改

现在,自定义框架创建的标准 Micrometer meter 变得更加简单。 有关更多信息,请参阅 Micrometer 集成spring-doc.cn

集成图定制

现在可以通过 . 有关更多信息,请参阅 Integration GraphIntegrationNodeFunction<NamedComponent, Map<String, Object>> additionalPropertiesCallbackIntegrationGraphServerspring-doc.cn

集成全局属性

当为类别打开逻辑电平时,现在可以在日志中打印 Integration 全局属性(包括默认值)。 有关更多信息,请参阅全局属性DEBUGorg.springframework.integrationspring-doc.cn

的 forreceiveTimeout@Poller

为了方便起见,注释现在提供了一个选项。 有关更多信息,请参阅使用 @Poller 注释@PollerreceiveTimeoutspring-doc.cn