多个SSLContext与WebFlux的Webclient



我需要调用多个不同的API从我的应用程序与WebClient。假设有两个不同的API。对于这些API,我必须使用从不同证书构建的不同SSLContexts。我为它们创建了不同的sslcontext(使用不同的证书)。

作为WebClient的后端,我使用标准的方法-ReactorClientHttpConnector与Reactor Netty Http客户端

SSL可以通过以下方式配置:

new ReactorClientHttpConnector(HttpClient.create()
.secure(sslContextSpec -> sslContextSpec.sslContext(sslContext))
);

但我不确定如何配置多个不同的SSLContext(每个API)。

现在我看到了三种方法:


选项1:

创建两个不同的ReactorClientHttpConnector与不同的HttpClient (HttpClient.create),并把我的SSLContexts。

最终我将有两个webclient各自基于它自己的ReactorClientHttpConnector。我不知道这是否是有效的方法,因为我怀疑我的应用程序中会有两个不同的事件循环组

<标题>

选项2:也许我可以链。secure()方法,并添加不同的SSLContexts,像这样:

new ReactorClientHttpConnector(HttpClient.create()
.secure(sslContextSpec -> sslContextSpec.sslContext(sslContext))
.secure(sslContextSpec -> sslContextSpec.sslContext(sslContext2))
);

但是,我不确定它们是否会同时被应用而不被覆盖,以及它是否会工作。

<标题>

选项3:创建一个包含所有必需证书的SSLContext


那么,如何处理这个呢?

创建两个不同的WebClient-这是方法1

创建两个不同的ReactorClientHttpConnector与不同的HttpClient (HttpClient. Create),并把我的SSLContexts。最终,我将有两个webclient,每个都基于它自己的ReactorClientHttpConnector。我不知道这是否是有效的方法,因为我怀疑我的应用程序中会有两个不同的事件循环组

两个WebClient共享事件循环组。它们将使用不同的事件循环组ONLY如果您通过runOn或使用ReactorResourceFactory配置它们。点击这里查看更多信息

相关内容

  • 没有找到相关文章

最新更新