5.5 和 6.0 之间的变化
新组件
已添加用于集成流定义的 Groovy DSL 实现。 有关详细信息,请参阅 Groovy DSL。
MQTT ClientManager
已添加新的 MQTT ClientManager
,以支持跨不同通道适配器的可重用 MQTT 连接。
有关详细信息,请参阅 共享 MQTT 客户端支持。
GraphQL 支持
已添加 GraphQL 支持。 有关详细信息,请参阅 GraphQL 支持。
Apache Camel 支持
已引入对 Apache Camel 路由的支持。 有关详细信息,请参阅 Apache Camel 支持。
Hazelcast 支持
Hazelcast Spring Integration Extensions 项目已迁移为 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 流队列支持
AMQP 模块已增强,以提供使用 RabbitMQ 流队列的入站和出站通道适配器支持。 有关详细信息,请参阅 RabbitMQ 流队列支持。
Apache MINA SFTP
SFTP 模块已从过时的 JCraft JSch 库完全重做为更健壮和现代的 Apache MINA 项目的 org.apache.sshd:sshd-sftp
模块。
有关详细信息,请参阅 SFTP 适配器。
Micrometer 观测
现在支持使用 Micrometer 启用计时器和跟踪的观测。 有关详细信息,请参阅 Micrometer 观测。
GraalVM Polyglot 支持
脚本模块现在提供基于 GraalVM Polyglot 支持的 PolyglotScriptExecutor
实现。
JavaScript 支持现在基于此执行器,因为其 JSR223 实现已从 Java 本身中移除。
有关详细信息,请参阅 脚本支持。
Apache Cassandra 支持
Apache Cassandra Spring Integration Extensions 项目已迁移为 spring-integration-cassandra
模块。
有关详细信息,请参阅 Apache Cassandra 支持。
本机镜像
提供了创建 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
接口本身中提供的流式 API。
该工厂类将在未来的版本中移除。
有关详细信息,请参阅 Java DSL。
从 Spring Framework 6.0
开始,org.springframework.util.concurrent.ListenableFuture
已弃用。
所有 Spring Integration 异步 API 都已迁移到 CompletableFuture
。
Messaging Gateway 接口方法现在可以返回 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 的网关)如果查询没有返回任何记录,现在返回空结果列表。
以前,返回 null
会结束流,或者抛出异常,具体取决于 requiresReply
。
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 请求属性支持
已为 WebFluxRequestExecutingMessageHandler
添加 Webclient 请求属性支持。
有关详细信息,请参阅 WebFlux 请求属性。