我正在使用 IntelliJ IDEA 创建 Spring WebFlux / Reactor 应用程序。 IDEA的调试器显示了许多无用的行,例如MonoDefer、MonoFlatMap等。有没有办法轻松跟踪堆栈?
![intellij-debug-traces](https://i.stack.imgur.com/mqcai.png)
不幸的是,在异步世界中,堆栈跟踪失去了很多意义。在这里,您可以看到一个堆栈,其中显示了构成整个反应链的运算符(包括 Spring 框架在您在控制器中定义的运算符之上使用的运算符)。唯一的问题是它显示了链被触发(或“订阅”)的位置,因为执行是惰性的,并且这是运行时唯一可见的路径......
对于正确的错误和堆栈跟踪,有一个.checkpoint()
您可以在链中显式使用该运算符,以捕获有关“程序集”的信息(其中运算符链在代码中声明),以提供更多上下文。然后它显示为异常堆栈跟踪的一部分,作为受抑制的异常。
使用 IntelliJ 的新异步调试器功能对我们来说也有点困难,因为执行模型没有提供固定的“调度站点与执行站点”对:Scheduler
用于通过运算符在序列中间切换线程的抽象,例如publishOn
and subscribeOn
意味着任意的“执行站点”(任意的ExecutorService
,一个滚动你自己的线程池,一个Thread
, ...).
我鼓励您阅读官方参考文档中的堆栈跟踪和调试信息:http://projectreactor.io/docs/core/release/reference/#debugging
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)