cat
cat copied to clipboard
3.0 feign + hystrix 无法传递调用链问题
使用spring cloud的体系,cat 3.0 client
使用hystrix进行熔断后,因为线程不是同一个,而cat的设计是基于threadlocal来的,所以无法在这种场景下显示调用链路.
主要原因大概看了下源码,网传通过重写HystrixConcurrencyStrategy,将rootId等传递下去只是解决了值传递,而没有解决调用链路的问题,大致看了下源码,问题还是在DefaultMessageTree通过当前线程获取,而这里面的context才是真正记录调用链路的stack.
也就是因为hytrix中的代码是新的线程,所以通过logRemoteClientCall等方法是无法获取父线程的stack.
现在有没有好的解决方案,我发现context类是个内部类 无法获取,然后通过add 方法添加事件,代码读的不多,有实际使用hytrix的同学可以回复下.
我也遇到了相同的问题
我试着修改源码,让context对象也传递进来,但是没能成功, 链路追踪还是有问题,改为信号量模式能正常显示调用链