阿里GTS分布式事务,在FeignRequestInterceptor里无法获取到xid

Blade 未结 1 1393
bluerose
bluerose 剑圣 2019-09-29 23:07

一、该问题的重现步骤是什么?

1. 我下载了阿里云GTS demo,在本地是可以正常运行

2. 它的xid传递方式是在FeignRequestInterceptor里直接获取,并设置为header值传递

3. 我把这一块加入到bladex的BladeFeignRequestHeaderInterceptor里执行

4. 测试获取xid为null


二、你期待的结果是什么?实际看到的又是什么?

期待可以获取到xid值,实际上输出为null。

在进入service方法时获取是可以获取到的,只是在调用client时,在RequestInterceptor里获取就无法获取到

实在不知道是什么原因

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

blade2.0.7 windows,IDEA


四、请提供详细的错误堆栈信息,这很重要。

这是我自己输出的日志信息

image.png

在我看来,feignrequestinterceptor 应该和在service里一致。我仔细分析了阿里云GTS demo,并没有发现不一样的地方,因为是demo,它相关配置较简单。整个逻辑是很简单,但是不知道为何bladex下feignrequestinterceptor 里就无法获取xid。

五、若有更多详细信息,请在下面提供。

image.png

上面进入service方法是可以获取到xid

image.png

上面调用client,进入拦截器后 ,日志输出xid为null。

另外我另外发了一个帖子是这个拦截器不知道为什么打断点无法进入,我只有通过log来看信息。

image.png

这是阿里云demo,feign拦截器

1条回答
  • 2019-10-08 16:49

    这个我还没研究过,后续会抽空继承下GTS试试

    作者追问:2019-10-10 09:01

    你好,我已经解决了此问题。原因是熔断器导致传参丢失

    0 讨论(0)
提交回复