我需要调用多个不同的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
配置它们。点击这里查看更多信息