在我的微服务中,我必须从地方获取数据。有些 URL 是固定的,但有些不是。如果我的基本 URL 发生变化,我是否需要一次又一次地创建 Webclient。如果不是,那么下面的方法是正确的来创建 Web 客户端。WebClient.create(); 后来每当我打电话时都会一次又一次地更改 URI。根据我的理解,创建 WebClient 必须是一些繁重的操作。
ReactorClientHttpConnector connector = new ReactorClientHttpConnector(
options -> options.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, requestTimeout).compression(true)
.afterNettyContextInit(ctx -> ctx.addHandlerLast(new ReadTimeoutHandler(readTimeout, TimeUnit.MILLISECONDS))));
return WebClient.builder()
.clientConnector(connector)
.baseUrl(hostURL)
.build();
Run Code Online (Sandbox Code Playgroud) 我从 iterable 创建了一个并行通量。在每个可迭代对象上,我都必须进行一次休息调用。但是在执行时,即使任何请求失败,所有剩余的请求也会失败。无论失败或成功,我都希望执行所有请求。
我目前正在使用 Flux.fromIterable 并使用 runOn 运算符
Flux.fromIterable(actions)
.parallel()
.runOn(Schedulars.elastic())
.flatMap(request -> someRemoteCall)
.sequential()
.subscribe();
Run Code Online (Sandbox Code Playgroud)
我希望执行 iterable 中的所有请求,无论失败或成功。但到目前为止,有些被执行了,有些失败了。