5.5 和 6.0 之间的更改
新组件
已添加 Groovy DSL 实现,用于集成流定义。更多信息,请参阅 Groovy DSL。
MQTT 客户端管理器
添加了一个新的 MQTT ClientManager
,以支持在不同的通道适配器之间复用 MQTT 连接。更多信息,请参阅 共享 MQTT 客户端支持。
GraphQL 支持
已经添加了对 GraphQL 的支持。更多信息请参见 GraphQL 支持。
Apache Camel 支持
已引入对 Apache Camel 路由的支持。更多信息请参见 Apache Camel 支持。
Hazelcast 支持
Hazelcast Spring 集成扩展项目已迁移到 spring-integration-hazelcast
模块。更多信息,请参见 Hazelcast 支持。
SMB 支持
已从 Spring Integration Extensions 项目添加了 SMB 支持。Java DSL(见 org.springframework.integration.smb.dsl.Smb
工厂)也已添加到此模块中。引入了 SmbStreamingMessageSource
和 SmbOutboundGateway
实现。更多信息,请参阅 SMB 支持。
PostgreSQL 推送通知
PostgresSubscribableChannel
允许在新的消息添加到 JdbcChannelMessageStore
时,通过 PostgresChannelMessageTableSubscriber
接收推送通知。
更多信息请参见 PostgreSQL:接收推送通知。
RabbitMQ Stream 队列支持
AMQP 模块已增强,以提供对使用 RabbitMQ Stream 队列的入站和出站通道适配器的支持。有关更多信息,请参阅 RabbitMQ Stream 队列支持。
Apache MINA SFTP
SFTP 模块已从过时的 JCraft JSch 库完全改用 Apache MINA 项目中更强大和现代的 org.apache.sshd:sshd-sftp
模块。
有关更多信息,请参阅 SFTP 适配器。
Micrometer 观测
使用 Micrometer 为定时器和跟踪启用观察现在是被支持的。更多信息请参见 Micrometer 观察。
GraalVM 多语言支持
脚本模块现在提供了一个基于 GraalVM 多语言支持的 PolyglotScriptExecutor
实现。JavaScript 支持现在基于此执行器,因为它的 JSR223 实现已经被 Java 自身移除。更多信息请参见脚本支持。
Apache Cassandra 支持
Apache Cassandra Spring 集成扩展项目已迁移到 spring-integration-cassandra
模块。更多信息,请参见 Apache Cassandra 支持。
Kotlin 协程
Kotlin 协程支持已引入到框架中。
更多信息请参见 Kotlin 协程。
本机图像
提供了创建 GraalVM 本地镜像的支持。更多信息请参见 本地镜像支持。
通用更改
消息注解现在是 @Repeatable
,相同的类型可以在同一个服务方法上声明多次。消息注解不再需要一个 poller
属性作为 @Poller
的数组。
更多信息请参见 注解支持。
为了方便起见,基于 RecipientListRouter
的 Scatter-Gather 的 XML 和 Java DSL 现在设置为 applySequence = true
,这样 gatherer 部分可以依赖默认的相关策略。
更多信息请参见 Scatter-Gather。
对 AbstractMappingMessageRouter
进行了另一项便捷的行为更改。现在,设置 defaultOutputChannel
也会将 channelKeyFallback
属性重置为 false
,因此不会尝试从其键解析通道,而是逻辑会立即回退到将消息发送到 defaultOutputChannel
。
更多信息请参见 路由选项。
AggregatingMessageHandler
现在不会在输出时拆分 MessageGroupProcessor
的 Collection<Message<?>>
结果(除非它是 SimpleMessageGroupProcessor
),而是发出一条包含整个集合作为有效载荷的单个消息。
更多信息请参见 聚合器。
IntegrationFlows
工厂现在被标记为已弃用,取而代之的是在 IntegrationFlow
接口中可用的 fluent API。工厂类将在未来的版本中被移除。
更多信息请参见 Java DSL。
org.springframework.util.concurrent.ListenableFuture
从 Spring Framework 6.0
开始已弃用。所有 Spring Integration 异步 API 都已迁移到 CompletableFuture
。
消息网关接口方法现在可以返回 Future<Void>
和 Mono<Void>
,并正确异步执行下游流程。
除了使用 @MessagingGateway
注解之外,接口还可以标记为 @Primary
。
@MessagingGateway
接口现在可以作为配置的 @Import
资源使用。
网关代理 Bean 的默认命名策略可以通过 @IntegrationComponentScan.nameGenerator()
属性进行自定义。如果存在 AnnotationConfigUtils.CONFIGURATION_BEAN_NAME_GENERATOR
Bean,则会先咨询它,否则会回退到 AnnotationBeanNameGenerator
。
更多信息请参见 消息网关。
integrationGlobalProperties
bean 现在由框架声明为 org.springframework.integration.context.IntegrationProperties
的实例,而不是之前已废弃的 java.util.Properties
。
如果查询未返回任何记录,现在以集合形式回复的消息处理程序(例如 JpaOutboundGateway
、JdbcOutboundGateway
和其他基于 DB 的网关)将返回一个空的结果列表。以前,根据 requiresReply
的设置,会返回 null
结束流程或抛出异常。
RMI 移除
spring-integration-rmi
模块在之前的版本中已被弃用,现在已完全移除。没有替代模块:建议迁移到更安全的网络和应用程序协议,例如 WebSockets、RSockets、gRPC 或 REST。
GemFire 移除
spring-integration-gemfire
模块已完全移除,因为 Spring Data 2022.0.0
不支持 VMware GemFire 或 Apache Geode。
HTTP 变更
HttpRequestHandlingEndpointSupport
中公开的表达式求值上下文中的 #cookies
变量现在是一个 MultiValueMap
,用于携带客户端设置的所有 cookie 值。更多信息请参见 HTTP 支持。
Apache Kafka 更改
当在入站网关或消息驱动的通道适配器上提供 RetryTemplate
时,如果也提供了 errorChannel
,则会自动配置 ErrorMessageSendingRecoverer
。
此外,还提供了新的 KafkaErrorMessageSendingRecoverer
;这可以与 DefaultErrorHandler
一起使用,以避免长时间聚合重试延迟导致的分区再平衡问题。
更多信息请参见 Spring for Apache Kafka 支持。
JDBC 更改
现在可以为 DefaultLockRepository
提供一个 PlatformTransactionManager
,而不再依赖于应用程序上下文中的主 bean。
更多信息请参见 JDBC 锁注册表。
TCP/IP 更改
AbstractConnectionFactory
和 DatagramPacketMessageMapper
的 lookupHost
属性现在默认设置为 false
,以避免在未配置 DNS 的环境中出现延迟。
有关更多信息,请参阅 TCP 和 UDP 支持。
JMS 更改
如果将 replyPubSubDomain
选项设置为 true
,JmsOutboundGateway
现在会创建一个 TemporaryTopic
而不是 TemporaryQueue
。
更多信息请参见 JMS 支持。
安全性更改
ChannelSecurityInterceptor
及其注解 @SecuredChannel
和 XML <secured-channels>
配置已弃用,取而代之的是 AuthorizationChannelInterceptor
。
更多信息请参见安全支持。
Webflux 请求属性支持
WebClient 请求属性支持已添加到 WebFluxRequestExecutingMessageHandler
。
更多信息请参见 WebFlux 请求属性。