要映射的反应式 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();