使用Reactor时充分利用堆栈跟踪

时间:2018-09-24 18:10:28

标签: spring reactor

当使用Reactor 3.1.6尝试主要完全使用反应式API编写spring(boot)应用程序时,我发现堆栈跟踪很快变得几乎不可用。

通常,我已经通过将我的公共方法设为MonoFlux来编写响应式方法,并且将许多私有方法用作可读性强的流的方法引用(示例)

public Mono<Foo> somePublicMethod(final Bar arg) {
    return Mono.just(arg)
               .map(this::internalTransformation)
               .flatMap(this::nicelyNamedInternalTransformationAsync);
}

private Foobar internalTransformation(final Bar arg) {
    // ...
}

public Mono<Foo> nicelyNamedInternalTransformationAsync(final Foobar arg) {
    // ..
}

此外,我经常会switchIfEmpty用于流控制,或onErrorResume。一旦有了更多完整的应用程序,事件监听器就会调用使用其他服务的服务,那么错误的堆栈跟踪就绝对是巨大的。其中大部分是反应堆的样板,我想我真的不知道如何将流实际链接在一起,因为实际上弄清楚通过流调用的路径非常困难。可以说,这也是我的团队对此最感兴趣的卖点之一。

对于使用流进行编程会产生简洁且有用的stracktrace进行调试的程序,是否有任何样式指南或模式?

对于特定示例,是否有一种方法可以在流中进行映射/切换,以使其在跟踪中不包括上游?

0 个答案:

没有答案