小编ank*_*sh 的帖子

Reactor onErrorContinue 运算符是否让原始序列继续?

Reactor 错误处理文档 ( https://projectreactor.io/docs/core/3.4.10/reference/index.html#error.handling ) 指出错误处理运算符不会让原始序列继续。

在了解错误处理运算符之前,您必须记住,反应序列中的任何错误都是终止事件。即使使用错误处理运算符,它也不会让原始序列继续。相反,它将 onError 信号转换为新序列(后备序列)的开始。换句话说,它替换了其上游终止的序列。

但 onErrorContinue 的 javadoc 声明如下(https://projectreactor.io/docs/core/3.4.10/api/index.html) -

通过从序列中删除有罪的元素并继续处理后续元素,让上游兼容运算符从错误中恢复。

onErrorContinue 不被视为“错误处理运算符”吗?

它似乎确实允许原始序列继续 -

        Flux.range(1, 5)
                .map(i -> {
                    if (i == 3) {
                        throw new RuntimeException("Forcing exception for " + i);
                    }
                    return i;
                })
                .doOnNext(i -> System.out.println(i))
                .onErrorContinue((throwable, o) -> System.err.println("Error while processing " + o + " - " + throwable.getMessage()))
                .subscribe();
Run Code Online (Sandbox Code Playgroud)

结果(删除了 3 个但继续后续元素)

1
2
4
5
Error while processing 3 - Forcing exception for 3

Process …
Run Code Online (Sandbox Code Playgroud)

java project-reactor reactor-kafka

5
推荐指数
1
解决办法
2472
查看次数

标签 统计

java ×1

project-reactor ×1

reactor-kafka ×1