Changes between 5.5 and 6.0

New Components

添加了适用于集成流定义的 Groovy DSL 实现。有关更多详细信息,请参见 Groovy DSL

MQTT ClientManager

已添加新的 MQTT ClientManager 以支持跨不同通道适配器的可重用 MQTT 连接。有关详细信息,请参阅 Shared MQTT Client Support

GraphQL Support

已添加 GraphQL 支持。有关更多详细信息,请参见 GraphQL Support

Apache Camel Support

已引入对 Apache Camel 路由的支持。有关更多详细信息,请参见 Apache Camel Support

Hazelcast Support

Hazelcast Spring Integration Extensions 项目已迁移为 `spring-integration-hazelcast`模块。有关更多详细信息,请参见 Hazelcast Support

SMB Support

已从 Spring Integration Extensions 项目添加了 SMB 支持。此模块还添加了 Java DSL(参见 `org.springframework.integration.smb.dsl.Smb`工厂)。已推出一个 `SmbStreamingMessageSource`和 `SmbOutboundGateway`实现。有关更多详细信息,请参见 SMB Support

PostgreSQL Push Notification

PostgresSubscribableChannel 允许在将新消息添加到 JdbcChannelMessageStore 时通过 PostgresChannelMessageTableSubscriber 接收推送通知。

有关详细信息,请参阅 PostgreSQL: Receiving Push Notifications

RabbitMQ Stream Queue Support

AMQP 模块已得到增强,可使用 RabbitMQ 流队列提供对入站和出站通道适配器的支持。有关更多详细信息,请参见 RabbitMQ Stream Queue Support

Apache MINA SFTP

SFTP 模块已从过时的 JCraft JSch 库完全重新制作,成为 Apache MINA 项目的更强大、更现代的 org.apache.sshd:sshd-sftp 模块。

有关更多详细信息,请参见 SFTP Adapters

Micrometer Observation

现在支持使用 Micrometer 启用计时器和跟踪观察。有关详细信息,请参阅 Micrometer Observation

GraalVM Polyglot Support

基于 GraalVM Polyglot 支持,脚本模块现在提供一个 `PolyglotScriptExecutor`实现。自其 JSR223 实现被 Java 自行移除以来,JavaScript 支持现在基于此执行程序。有关更多详细信息,请参见 Scripting Support

Apache Cassandra Support

Apache Cassandra Spring Integration Extensions 项目已迁移为 `spring-integration-cassandra`模块。有关更多详细信息,请参见 Apache Cassandra Support

Kotlin Coroutines

已向框架中引入了 Kotlin 协程支持。

有关详细信息,请参阅 Kotlin Coroutines

Native Images

提供了对创建 GraalVM 原生映像的支持。有关更多详细信息,请参见 Native Images Support

General Changes

消息传递注释现在为 @Repeatable,并且相同类型可以在同一服务方法上声明多次。消息传递注释不再将 poller 属性作为 @Poller 数组。

有关更多详细信息,请参见 Annotation Support

为方便起见,基于 RecipientListRouter 的 Scatter-Gather 的 XML 和 Java DSL 现在设置了 applySequence = true,因此聚合器部分可以依赖于默认相关策略。

有关更多详细信息,请参见 Scatter-Gather

AbstractMappingMessageRouter 已进行另一个方便的行为更改。现在,设置 defaultOutputChannel 还会将 channelKeyFallback 属性重置为 false,因此不会尝试从其键解析通道,但逻辑会立即回退为将消息发送到 defaultOutputChannel

有关详细信息,请参阅 Router Options

AggregatingMessageHandler 现在不会在输出上拆分 MessageGroupProcessor(除非是 SimpleMessageGroupProcessor)的 Collection<Message<?>> 结果,而是会发出一个单消息,其中包含整个集合作为有效负载。

有关详细信息,请参阅 Aggregator

IntegrationFlows 工厂现在已被标记为弃用,取而代之的是 IntegrationFlow 界面本身中提供的流畅 API。此工厂类将在未来版本中删除。

有关详细信息,请参阅 Java DSL

从 Spring Framework“6.0”开始,org.springframework.util.concurrent.ListenableFuture 已被弃用。所有 Spring 集成异步 API 已迁移到 CompletableFuture

消息传递网关界面方法现在可以返回 Future<Void>Mono<Void>,并正确异步执行下游流程。

@MessagingGateway 注释外,接口还可以用 @Primary 标记。

@MessagingGateway 接口现在可用作用于配置的 @Import 资源。

可以通过 @IntegrationComponentScan.nameGenerator() 属性定制网关代理 Bean 的默认命名策略。如果存在 AnnotationConfigUtils.CONFIGURATION_BEAN_NAME_GENERATOR Bean,在返回到 AnnotationBeanNameGenerator 之前,将在此之前协商。

有关更多详细信息,请参见 Messaging Gateway

integrationGlobalProperties Bean 现在由框架声明为 org.springframework.integration.context.IntegrationProperties 的实例,而不是以前弃用的 java.util.Properties

如果查询没有返回任何记录,则生成集合作为答复的消息处理程序(例如,JpaOutboundGatewayJdbcOutboundGateway 和其他基于数据库的网关)现在返回一个空结果列表。以前,会返回 null 以结束流程或引发异常,具体取决于 requiresReply

RMI Removal

在以前版本中弃用后,spring-integration-rmi 模块已被完全删除。没有替代品:建议迁移到更安全的网络和应用协议,例如 WebSockets、RSockets、gRPC 或 REST。

GemFire Removal

由于 Spring Data 2022.0.0 不支持 VMware GemFire 或 Apache Geode,因此 spring-integration-gemfire 模块已完全删除。

HTTP Changes

HttpRequestHandlingEndpointSupport 中公开的用于表达式求值上下文的 #cookies 变量现在是 MultiValueMap 用于承载客户端设置的所有 cookie 值。有关详细信息,请参阅 HTTP Support

Apache Kafka Changes

如果在入站网关或消息驱动通道适配器上提供 RetryTemplate,并且还提供了 errorChannel,则自动配置 ErrorMessageSendingRecoverer

此外,还提供了新的 KafkaErrorMessageSendingRecoverer;这可与 DefaultErrorHandler 一起使用,以避免因长时间聚合的重试延迟导致分区重新平衡的问题。

有关更多信息,请参见 Spring for Apache Kafka Support

JDBC Changes

现在可以向 DefaultLockRepository 提供 PlatformTransactionManager,而不是依赖于来自应用程序上下文的首要 Bean。

有关详细信息,请参阅 JDBC Lock Registry

TCP/IP Changes

现在,默认情况下,AbstractConnectionFactoryDatagramPacketMessageMapperlookupHost 属性设置为 false,以避免在未配置 DNS 的环境中出现延迟。

有关更多信息,请参见TCP and UDP Support

JMS Changes

如果 replyPubSubDomain 选项设为 true,则 JmsOutboundGateway 现在会创建 TemporaryTopic,而不是 TemporaryQueue

有关更多信息,请参见 JMS Support

Security Changes

已弃用 ChannelSecurityInterceptor 及其注释 @SecuredChannel 和 XML <secured-channels> 配置,转而采用 AuthorizationChannelInterceptor

有关详细信息,请参阅 Security Support

Webflux Request Attributes Support

已为 WebFluxRequestExecutingMessageHandler 添加了 WebClient 请求属性支持。

有关详细信息,请参阅 WebFlux Request Attributes