5.2 和 5.3 之间的更改
新组件
集成模式
引入了 IntegrationPattern 抽象,以指示 Spring Integration 组件属于哪种企业集成模式(一个 IntegrationPatternType)和类别。有关此抽象及其用例的更多信息,请参阅其 JavaDocs 和 集成图。
ReactiveMessageHandler
ReactiveMessageHandler 现在在框架中得到原生支持。有关更多信息,请参见 ReactiveMessageHandler。
ReactiveMessageSourceProducer
ReactiveMessageSourceProducer 是 MessageProducerSupport 的响应式实现,它将提供的 MessageSource 包装成一个 Flux,用于按需的 receive() 调用。有关更多信息,请参见 响应式流支持。
Java DSL 扩展
引入了新的 IntegrationFlowExtension API,以允许通过自定义或组合的 EIP 运算符扩展现有的 Java DSL。这也可以用于为任何开箱即用的 IntegrationComponentSpec 扩展引入自定义器。有关更多信息,请参见 DSL 扩展。
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() 运算符,它基于 BroadcastCapableChannel 和 BroadcastPublishSubscribeSpec。当我们配置子流作为代理支持通道(如 SubscribableJmsChannel、SubscribableRedisChannel 等)的发布-订阅订阅者时,此流式 API 具有优势。有关更多信息,请参见 子流支持。
Spring Integration 中的事务支持现在还包括配置 ReactiveTransactionManager 的选项,如果 MessageSource 或 MessageHandler 实现生成用于发送负载的响应式类型。有关更多信息,请参见 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 配置。有关更多信息,请参见 领导事件处理。
文件更改
FileSplitter 在 markersJson 模式下不再需要 Jackson 处理器(或类似)依赖项。它使用 SimpleJsonSerializer 来表示 FileSplitter.FileMarker 实例的直接字符串。有关更多信息,请参见 FileSplitter。