如需使用最新稳定版本,请使用 Spring Integration 7.0.4spring-doc.cadn.net.cn

5.0 与 5.1 之间的变更

新组件

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

AmqpDedicatedChannelAdvice

增强的函数支持

The java.util.function interfaces now have improved integration support in the Framework components. Also, Kotlin lambdas now can be used for handler and source methods.spring-doc.cadn.net.cn

@LongRunningTest

提供了 JUnit 5 @LongRunningTest 条件注解,用于检查环境或系统属性中是否存在值为 trueRUN_LONG_INTEGRATION_TESTS 条目,从而确定是否应运行或跳过测试。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,生成的 Bean 名称现在将基于组件类型,以便从可视化工具、日志分析器和指标收集器中获得更好的可读性。spring-doc.cadn.net.cn

The GenericHandler.handle() now excepts a MessageHeaders type for the second argument.spring-doc.cadn.net.cn

调度器异常

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

  • 任何具有 failedMessage 属性的 MessagingException 类型都会被原样重新抛出。spring-doc.cadn.net.cn

  • 所有其他异常都会被封装在 MessageDeliveryException 中,并设置 failedMessage 属性。spring-doc.cadn.net.cn

  • A MessagingException of any kind that has a failedMessage property was re-thrown unchangedspring-doc.cadn.net.cn

  • 一个没有 failedMessage 属性的 MessagingException 被包装在 MessagingException 中,且该 MessagingExceptionfailedMessage 属性已设置。spring-doc.cadn.net.cn

  • 其他 RuntimeException 个实例被原样重新抛出。spring-doc.cadn.net.cn

  • 已检查异常被包装在 MessageDeliveryException 中,且 failedMessage 属性已设置。spring-doc.cadn.net.cn

全局通道拦截器

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

通道拦截器

ChannelInterceptor.postReceive() 在未收到消息时不再被调用;现在无需再检查 null Message<?>。 此前,该方法会被调用。 如果您有依赖此先前行为的拦截器,请改用实现 afterReceiveCompleted(),因为无论是否收到消息,该方法都会被调用。 此外,PolledAmqpChannelPolledJmsChannel 此前不会用 null 调用 afterReceiveCompleted();现在会这样做了。spring-doc.cadn.net.cn

ObjectToJsonTransformer

ObjectToJsonTransformer 引入了一个新的 ResultType.BYTES 模式。spring-doc.cadn.net.cn

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

集成流:生成的 Bean 名称

从 5.0.5 版本开始,在 IntegrationFlow 中生成的组件的 bean 名称将包含流 bean 的名称,后跟一个点,作为前缀。 例如,如果流 bean 被命名为 flowBean,则生成的 bean 可能命名为 flowBean.generatedBeanspring-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 开始,您必须显式启用 @Publisher AOP 功能,方法是使用 @EnablePublisher 或在 <int:annotation-config> 上使用 <int:enable-publisher> 子元素。 此外,proxy-target-classorder 属性已添加用于调整 ProxyFactory 配置。spring-doc.cadn.net.cn

有关更多信息,请参阅使用 @Publisher 注解的基于注解的配置spring-doc.cadn.net.cn

文件变更

如果您使用的是 FileExistsMode.APPENDFileExistsMode.APPEND_NO_FLUSH,您可以提供一个 newFileCallback,该函数将在创建新文件时被调用。 此回调会接收新创建的文件以及触发回调的消息。 例如,这可用于写入 CSV 文件的表头。spring-doc.cadn.net.cn

The FileReadingMessageSource现在不会检查并创建目录,直到其 start() 被调用。 因此,如果 FileReadingMessageSource 的入站通道适配器具有 autoStartup = false,则在应用程序启动期间不会对文件系统造成失败。spring-doc.cadn.net.cn

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

AMQP 变更

我们已在DefaultAmqpHeaderMapper中对IDTimestamp进行了标头映射更改。 有关更多信息,请参阅AMQP 消息标头底部的说明。spring-doc.cadn.net.cn

The contentType 标头现在已正确映射为通用标头映射中的条目。 有关更多信息,请参阅 contentType 标头spring-doc.cadn.net.cn

从版本 5.1.3 开始,如果在手动确认消息时发生消息转换异常,并且已定义错误通道,则负载为 ManualAckListenerExecutionFailedException,并带有额外的 channeldeliveryTag 属性。 这使得错误流能够 ack/nack 原始消息。 有关更多信息,请参阅 入站消息转换spring-doc.cadn.net.cn

JDBC 更改

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

当请求消息的负载是 Iterable 类型的实例时,JdbcMessageHandler 现在支持 batchUpdate 功能。spring-doc.cadn.net.cn

INT_CHANNEL_MESSAGE 表(针对 JdbcChannelMessageStore)的索引已优化。 如果您在该存储中有大型消息组,可能需要修改索引。spring-doc.cadn.net.cn

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

FTP 和 SFTP 变更

A RotatingServerAdvice is now available to poll multiple servers and directories with the inbound channel adapters. See Inbound Channel Adapters: Polling Multiple Servers and Directories and Inbound Channel Adapters: Polling Multiple Servers and Directories for more information.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

The CachingSessionFactory 具有一个新属性 testSession,当该属性为 true 时,会在从缓存中检出现有会话时,促使工厂对 Session 执行 test() 操作。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 支持

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

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

HTTP/WebFlux 支持

The statusCodeExpression (and 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

Micrometer 支持变更

现在,自定义框架创建的 Micrometer 标准度量指标更加简单了。 有关更多信息,请参阅 Micrometer 集成spring-doc.cadn.net.cn

集成图自定义

现在可以通过在 IntegrationGraphServer 上执行 Function<NamedComponent, Map<String, Object>> additionalPropertiesCallback,为 IntegrationNodes 添加额外属性。 有关更多信息,请参阅 集成图spring-doc.cadn.net.cn

集成全局属性

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

receiveTimeout对于@Poller

The @Poller 注解现在为方便起见提供了 receiveTimeout 选项。 有关更多信息,请参阅 使用 @Poller 注解spring-doc.cadn.net.cn