5.2 和 5.3 之间的变化

新组件

集成模式

引入了 IntegrationPattern 抽象,用于指示 Spring Integration 组件属于哪种企业集成模式(IntegrationPatternType)和类别。 有关此抽象及其用例的更多信息,请参阅其 JavaDocs 和 集成图

ReactiveMessageHandler

框架现在原生支持 ReactiveMessageHandler。 有关更多信息,请参阅 ReactiveMessageHandler

ReactiveMessageSourceProducer

ReactiveMessageSourceProducerMessageProducerSupport 的一个响应式实现,用于将提供的 MessageSource 封装成 Flux,以进行按需的 receive() 调用。 有关更多信息,请参阅 响应式流支持

Java DSL 扩展

引入了新的 IntegrationFlowExtension API,允许使用自定义或组合的 EIP 运算符扩展现有的 Java DSL。 这也可以用于为任何开箱即用的 IntegrationComponentSpec 扩展引入定制器。 有关更多信息,请参阅 x5.3-java-dsl-extensions

Kotlin DSL

引入了用于集成流配置的 Kotlin DSL。 有关更多信息,请参阅 Kotlin DSL 章

ReactiveRequestHandlerAdvice

提供了 ReactiveRequestHandlerAdvice 以自定义来自消息处理程序的 Mono 响应。 有关更多信息,请参阅 响应式通知

HandleMessageAdviceAdapter

提供了 HandleMessageAdviceAdapter 以包装任何 MethodInterceptor,用于将其应用于 MessageHandler.handleMessage(),而不是默认的 AbstractReplyProducingMessageHandler.RequestHandler.handleRequestMessage() 行为。 有关更多信息,请参阅 处理消息通知

MongoDB 响应式通道适配器

spring-integration-mongodb 模块现在为 Spring Data 中的响应式 MongoDb 驱动程序支持提供了通道适配器实现。 此外,MongoDbChangeStreamMessageProducer 提供了 MongoDb 变更流支持的响应式实现。 有关更多信息,请参阅 MongoDB 支持

ReceiveMessageAdvice

引入了一个特殊的 ReceiveMessageAdvice,用于精确代理 MessageSource.receive()PollableChannel.receive()。 有关更多信息,请参阅 智能轮询

一般变化

网关代理现在默认不代理 default 方法。 有关更多信息,请参阅 调用 default 方法

内部组件(例如 _org.springframework.integration.errorLogger)在集成图中表示时具有缩短的名称。 有关更多信息,请参阅 集成图

在聚合器中,当 MessageGroupProcessor 返回 Message 时,如果 sequenceDetails 与组中第一条消息的头部匹配,则对输出消息执行 MessageBuilder.popSequenceDetails()。 有关更多信息,请参阅 聚合器编程模型

Java DSL 中添加了一个新的 publishSubscribeChannel() 运算符,它基于 BroadcastCapableChannelBroadcastPublishSubscribeSpec。 当我们将子流配置为代理支持的通道(如 SubscribableJmsChannelSubscribableRedisChannel 等)的发布-订阅订阅者时,这个流畅的 API 具有其优势。 有关更多信息,请参阅 子流支持

Spring Integration 中的事务支持现在还包括配置 ReactiveTransactionManager 的选项,如果 MessageSourceMessageHandler 实现生成用于发送有效负载的响应式类型。 有关更多信息,请参阅 TransactionInterceptorBuilder。 另请参阅 响应式事务

Java DSL 中添加了一个新的 intercept() 运算符,用于注册 ChannelInterceptor 实例而无需创建显式通道。 有关更多信息,请参阅 运算符 intercept()

MessageStoreSelector 有一个新的机制来比较旧值和新值。 有关更多信息,请参阅 幂等接收器企业集成模式

MessageProducerSupport 基类现在有一个 subscribeToPublisher(Publisher<? extends Message<?>>) API,允许实现通过响应式 Publisher 发送消息的消息驱动生产者端点。 有关更多信息,请参阅 响应式流支持

AMQP 变化

出站通道适配器有一个新的属性 multiSend,允许在一次 RabbitTemplate 调用范围内发送多条消息。 有关更多信息,请参阅 AMQP 出站通道适配器

入站通道适配器现在支持 consumerBatchEnabled 属性设置为 true 的侦听器容器。 请参阅 AMQP 入站通道适配器

HTTP 变化

AbstractHttpRequestExecutingMessageHandler 上的 encodeUri 属性已被弃用,取而代之的是新引入的 encodingMode。 有关更多信息,请参阅 DefaultUriBuilderFactory.EncodingMode JavaDocs 和 控制 URI 编码。 这也会影响 WebFluxRequestExecutingMessageHandler、相应的 Java DSL 和 XML 配置。 AbstractWebServiceOutboundGateway 中也添加了相同的选项。

Web 服务变化

已添加对 Web 服务组件的 Java DSL 支持。 AbstractWebServiceOutboundGateway 上的 encodeUri 属性已被弃用,取而代之的是新引入的 encodingMode - 类似于上述 HTTP 变化。 有关更多信息,请参阅 Web 服务支持

TCP 变化

FailoverClientConnectionFactory 默认情况下不再回退,直到当前连接失败。 有关更多信息,请参阅 TCP 故障转移客户端连接工厂

TcpOutboundGateway 现在支持异步请求/响应。 有关更多信息,请参阅 TCP 网关

您现在可以配置客户端连接,以便对新连接执行一些任意测试。 有关更多信息,请参阅 测试连接

RSocket 变化

RSocketInboundGateway 中添加了一个 decodeFluxAsUnit 选项,其含义是将传入的 Flux 解码为单个单元,或者对其中的每个事件应用解码。 有关更多信息,请参阅 RSocket 入站网关

Zookeeper 变化

LeaderInitiatorFactoryBean(及其 XML <int-zk:leader-listener>)公开了一个 candidate 选项,用于更好地控制 Candidate 配置。 有关更多信息,请参阅 领导事件处理

MQTT 变化

入站通道适配器现在可以配置为提供用户控制何时确认消息已送达。 有关更多信息,请参阅 手动确认

出站适配器现在在无法创建连接或连接丢失时发布 MqttConnectionFailedEvent。 以前,只有入站适配器这样做。 请参阅 MQTT 事件

(S)FTP 变化

FileTransferringMessageHandler(例如用于 FTP 和 SFTP)除了 Filebyte[]StringInputStream 之外,现在还支持 org.springframework.core.io.Resource。 有关更多信息,请参阅 SFTP 支持FTP 支持

文件变化

FileSplittermarkersJson 模式下不再需要 Jackson 处理器(或类似)依赖。 它使用 SimpleJsonSerializer 来表示 FileSplitter.FileMarker 实例的简单字符串形式。 有关更多信息,请参阅 文件拆分器