5.2 和 5.3 之间的更改
新组件
集成模式
引入了 IntegrationPattern
抽象来指示 Spring Integration 组件属于哪个企业集成模式(一个 IntegrationPatternType
)和类别。有关此抽象及其用例的更多信息,请参阅其 JavaDocs 和 集成图。
ReactiveMessageHandler
ReactiveMessageHandler
现在已得到框架的原生支持。更多信息,请参阅 ReactiveMessageHandler。
ReactiveMessageSourceProducer
ReactiveMessageSourceProducer
是 MessageProducerSupport
的响应式实现,用于将提供的 MessageSource
包装成一个 Flux
,以便按需调用 receive()
。更多信息,请参见 Reactive Streams Support。
Java DSL 扩展
引入了一个新的 IntegrationFlowExtension
API,用于扩展现有的 Java DSL,添加自定义或组合的 EIP 操作符。这也可以用于为任何现成的 IntegrationComponentSpec
扩展引入定制化内容。更多信息,请参见 DSL 扩展。
Kotlin DSL
已经引入了用于集成流配置的 Kotlin DSL。更多信息,请参阅 Kotlin DSL 章节。
ReactiveRequestHandlerAdvice
提供了一个 ReactiveRequestHandlerAdvice
用于自定义消息处理程序的 Mono
回复。更多信息,请参阅 Reactive Advice。
HandleMessageAdviceAdapter
提供了一个 HandleMessageAdviceAdapter
,用于包装任何 MethodInterceptor
,以便应用于 MessageHandler.handleMessage()
,而不是默认的 AbstractReplyProducingMessageHandler.RequestHandler.handleRequestMessage()
行为。更多信息,请参见 处理消息建议。
MongoDB 反应式通道适配器
spring-integration-mongodb
模块现在为 Spring Data 中的 Reactive MongoDb 驱动程序支持提供了通道适配器实现。此外,还通过 MongoDbChangeStreamMessageProducer
提供了对 MongoDb 变更流支持的响应式实现。更多信息请参见 MongoDB 支持。
接收消息建议
引入了一个特殊的 ReceiveMessageAdvice
,用于代理 exactly MessageSource.receive()
或 PollableChannel.receive()
。更多信息,请参见智能轮询。
通用更改
网关代理现在默认不代理 default
方法。更多信息,请参阅调用默认方法。
内部组件(例如 _org.springframework.integration.errorLogger
)在集成图中显示时现在使用缩短的名称。更多信息,请参见 集成图。
在聚合器中,当 MessageGroupProcessor
返回一个 Message
时,如果 sequenceDetails
与组中第一个消息的头部匹配,则会对输出消息执行 MessageBuilder.popSequenceDetails()
。有关更多信息,请参阅 Aggregator 编程模型。
Java DSL 中添加了一个新的 publishSubscribeChannel()
操作符,它是基于 BroadcastCapableChannel
和 BroadcastPublishSubscribeSpec
的。这个流畅的 API 在我们将子流配置为发布订阅者用于像 SubscribableJmsChannel
、 SubscribableRedisChannel
等代理支持的通道时具有优势。更多信息请参见 子流支持。
Spring Integration 中的事务支持现在还包括配置 ReactiveTransactionManager
的选项,如果 MessageSource
或 MessageHandler
实现生成要发送的有效负载的响应式类型。更多信息请参见 TransactionInterceptorBuilder
。另请参阅响应式事务。
在 Java DSL 中添加了一个新的 intercept()
操作符,用于注册 ChannelInterceptor
实例而无需创建显式的通道。更多信息请参见 操作符 intercept()。
MessageStoreSelector
有一个新的机制来比较旧值和新值。更多信息,请参阅 幂等接收器企业集成模式。
MessageProducerSupport
基类现在有了一个 subscribeToPublisher(Publisher<? extends Message<?>>)
API,以允许实现通过反应式 Publisher
发送消息的消息驱动型生产者端点。更多信息,请参阅 Reactive Streams Support。
AMQP 更改
outbound 通道适配器有一个新属性 multiSend
,允许在一次 RabbitTemplate
调用的作用范围内发送多个消息。更多信息,请参见 AMQP Outbound Channel Adapter。
现在,入站通道适配器支持 consumerBatchEnabled
属性设置为 true
的监听器容器。请参阅 AMQP 入站通道适配器
HTTP 更改
AbstractHttpRequestExecutingMessageHandler
中的 encodeUri
属性已弃用,取而代之的是新引入的 encodingMode
。有关更多信息,请参阅 DefaultUriBuilderFactory.EncodingMode
JavaDocs 和 控制 URI 编码。这同样影响了 WebFluxRequestExecutingMessageHandler
、相应的 Java DSL 和 XML 配置。相同的选项也添加到了 AbstractWebServiceOutboundGateway
中。
Web Services 变更
已为 Web Service 组件添加了 Java DSL 支持。AbstractWebServiceOutboundGateway
上的 encodeUri
属性已弃用,取而代之的是新引入的 encodingMode
——类似于上面提到的 HTTP 更改。有关更多信息,请参阅 Web Services Support。
TCP 改变
FailoverClientConnectionFactory
默认情况下不再回退,直到当前连接失败。有关更多信息,请参阅 TCP 故障转移客户端连接工厂。
TcpOutboundGateway
现在支持异步请求/回复。更多信息请参见 TCP 网关。
你现在可以配置客户端连接以在新连接上执行一些任意测试。更多信息请参见测试连接。
RSocket 更改
已将 decodeFluxAsUnit
选项添加到 RSocketInboundGateway
,其含义是将传入的 Flux
解码为一个整体单元,或对其中的每个事件应用解码。更多信息,请参见 RSocket 入站网关。
Zookeeper 变更
LeaderInitiatorFactoryBean
(以及它的XML <int-zk:leader-listener>
)暴露了一个 candidate
选项,用于更好地控制 Candidate
配置。更多信息请参见 领导事件处理。
MQTT 更改
现在可以配置入站通道适配器以提供用户对何时确认消息已交付的控制。有关更多信息,请参见手动确认。
outbound 适配器现在在无法创建连接或连接丢失时发布 MqttConnectionFailedEvent
事件。以前,只有 inbound 适配器这样做。请参阅 MQTT 事件。
(S)FTP 更改
文件更改
FileSplitter
不再需要 Jackson 处理器(或类似)依赖项用于 markersJson
模式。它使用 SimpleJsonSerializer
来直接表示 FileSplitter.FileMarker
实例的字符串形式。更多信息请参见 FileSplitter。