zipkin和seata导致了openFeign不能远程调用服务

现象

number of retries on next server exceeded max 1 retries

解决方法

  1. 在启动类中加忽略 @SpringBootApplication(exclude = {SeataFeignClientAutoConfiguration.class})

  2. 加入全局拦截传递XID

    import feign.RequestInterceptor;
    import feign.RequestTemplate;
    import io.seata.core.context.RootContext;
    import io.seata.spring.annotation.GlobalTransactional;
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
    import org.springframework.stereotype.Component;
    
    /**
     * 全局拦截传递XID
     */
    @Component
    @ConditionalOnClass({RequestInterceptor.class, GlobalTransactional.class})
    public class SetSeataInterceptor implements RequestInterceptor {
    
        @Override
        public void apply(RequestTemplate template) {
    
            String currentXid = RootContext.getXID();
            if (!StringUtils.isEmpty(currentXid)) {
                template.header(RootContext.KEY_XID, currentXid);
            }
        }
    }
    

结果

在这里插入图片描述


版权声明:本文为weixin_43960684原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。