微服务加入seata后。a服务调用b服务开启全局事务,会出现b服务拿不到AuthUtil的user对象

Blade 未结 4 689
洪猪长
洪猪长 2023-09-27 09:30

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

1. 微服务加入seata后。a服务调用b服务开启全局事务,会出现b服务拿不到AuthUtil的user对象,是正常的,还是seata配置错误

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


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


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


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

4条回答
  •  gtfhao
    gtfhao (楼主)
    2023-10-07 14:56

    上面回答的也不完整,你找到了位置,但是没说出来问题所在

    BladeSentinelAutoConfiguration.java中修改下下面的代码即可。原因:开启了seata,seata中有个feign的Interceptor和BladeFeignRequestInterceptor实现了同一个接口,下面代码生成对象时就用了seata的那个了,不会走下面的方法了,固feign调用时请求头传递不过去了

    @Bean
    @ConditionalOnMissingBean(name = "bladeFeignRequestInterceptor")
    public RequestInterceptor requestInterceptor() {
       return new BladeFeignRequestInterceptor();
    }

    楼主,采纳吧,这个问题,我一点点debug,找了一天才找到问题所在。

提交回复