使用IntelliJ IDEA调试Spring WebFlux / Reactor应用程序
作者:互联网
我正在使用IntelliJ IDEA创建一个Spring WebFlux / Reactor应用程序. IDEA的调试器显示了许多无用的行,例如MonoDefer,MonoFlatMap等.有没有一种方法可以轻松地跟踪堆栈?
解决方法:
在异步世界中,不幸的是堆栈跟踪失去了很多意义.在这里,您将看到一个堆栈,其中显示了构成整个反应链的操作符(包括Spring框架在控制器中定义的操作符之上使用的操作符).唯一的问题是它显示了链的触发位置(或“订阅”),因为执行是惰性的,并且这是在运行时可见的唯一路径…
对于正确的错误和堆栈跟踪,可以在链中显式使用.checkpoint()运算符,以捕获有关“程序集”(在代码中声明了运算符链)的信息,以提供一些信息.更多上下文.然后将其显示为异常堆栈strace的一部分,作为受抑制的异常.
使用IntelliJ的新异步调试器功能对我们来说也有点困难,因为执行模型没有提供一对固定的“调度站点与执行站点”:用于在线程中间交换线程的Scheduler抽象像publishOn和subscribeOn这样的运算符的顺序暗示着任意的“执行站点”(任意的ExecutorService,自己的线程池,线程等).
我鼓励您在http://projectreactor.io/docs/core/release/reference/#debugging的官方参考文档中阅读堆栈跟踪和调试信息.
标签:project-reactor,intellij-idea,spring 来源: https://codeday.me/bug/20191108/2010194.html