要映射的反应式 Java 列表
Reactive Java List to Map
我有一个 methodA,它接受参数和 returns 结果。我正在编写一个反应式方法来批量调用该函数。但无法理解反应式句法。
我的代码看起来像这样
List<GetResult> successfulResults = Collections.synchronizedList(new ArrayList<>());
Map<String, Throwable> erroredResults = new ConcurrentHashMap<>();
Flux.fromIterable(docsToFetch).flatMap(key -> reactiveCollection.getAndTouch(key, Duration.ofMinutes(extendExpiryInMin))
.onErrorResume(e -> {
erroredResults.put(key, e);
return Mono.empty();
})).doOnNext(successfulResults::add).last().block();
当前实现调用该方法但将结果收集到列表中。在列表中收集结果对我的用例没有意义。我想将结果收集到键和结果的哈希图中。
解决方法是
List<String> docsToFetch = Arrays.asList("airline_112", "airline_1191", "airline_1203");
Map<String, GetResult> successfulResults = new ConcurrentHashMap<>();
Map<String, Throwable> erroredResults = new ConcurrentHashMap<>();
Flux.fromIterable(docsToFetch).flatMap(key -> reactiveCollection.get(key).onErrorResume(e -> {
erroredResults.put(key, e);
return Mono.empty();
}).doOnNext(getResult -> successfulResults.put(key, getResult))).last().block();
我有一个 methodA,它接受参数和 returns 结果。我正在编写一个反应式方法来批量调用该函数。但无法理解反应式句法。 我的代码看起来像这样
List<GetResult> successfulResults = Collections.synchronizedList(new ArrayList<>());
Map<String, Throwable> erroredResults = new ConcurrentHashMap<>();
Flux.fromIterable(docsToFetch).flatMap(key -> reactiveCollection.getAndTouch(key, Duration.ofMinutes(extendExpiryInMin))
.onErrorResume(e -> {
erroredResults.put(key, e);
return Mono.empty();
})).doOnNext(successfulResults::add).last().block();
当前实现调用该方法但将结果收集到列表中。在列表中收集结果对我的用例没有意义。我想将结果收集到键和结果的哈希图中。
解决方法是
List<String> docsToFetch = Arrays.asList("airline_112", "airline_1191", "airline_1203");
Map<String, GetResult> successfulResults = new ConcurrentHashMap<>();
Map<String, Throwable> erroredResults = new ConcurrentHashMap<>();
Flux.fromIterable(docsToFetch).flatMap(key -> reactiveCollection.get(key).onErrorResume(e -> {
erroredResults.put(key, e);
return Mono.empty();
}).doOnNext(getResult -> successfulResults.put(key, getResult))).last().block();