我们有一个SpringIntegration工作流,包含restful HTTP入站调用和出站调用。工作流主要用通道、链、拆分器和聚合器的XML声明来表示。
在Servlet
领域,我们使用http:inbound-gateway
和http:outbound-gateway
组件作为内部工作流的输入/输出。使用SpringBootautoconfiguration
for Tomcat/Jetty/Undertow,这似乎工作得很好。
我们一直在尝试Reactive
领域,在相同的内部工作流程中使用webflux:inbound-gateway
和webflux:outbound-gateway
组件。这似乎适用于tomcat
和jetty
服务器,但没有得到netty
的响应和undertow
的一些错误。我还没有发现为什么我们从最后两个配置中得到错误。
我想知道的是,如果相同的内部工作流可以连接到reactive
或servlet
组件而不需要更改。我们确实使用了一个拆分器/聚合器,但是我阅读了关于WebFlux的SpringIntegration文档部分,并没有弄清楚这些结构是否可以同时用于这两个领域。(https://docs.spring.io/spring-integration/reference/html/reactive-streams.html#splitter-and-aggregator)
webflux:inbound-gateway
是HTTP协议的服务器端。必须在响应流HTTP服务器环境中使用。不确定关于Undertow和Jetty,但是Tomcat在模拟模式下工作。我通常使用io.projectreactor.netty:reactor-netty-http
.
webflux:outbound-gateway
是HTTP协议的客户端。它完全基于WebClient
,在什么环境下使用并不重要。
同样适用于splitter和aggregator组件:它们不需要任何服务器实现,也不需要暴露任何外部端口来担心一些细节。可以简单地在响应式流定义和常规流中使用。