feignclient使用动态服务名,sluth无法追踪完整调用链的解决方案
由于项目的原因,在使用feign时,需要根据注册的服务名手动创建feignclient,但是在结合sluth使用时,发现始终无法追踪到完整的服务调用链,经过研究发现,是因为手动创建的Feign.Builder不能被sluth代理,无法将traceId传递给调用的服务,所以形成不了完成的调用链路,通过以下方案,则可以解决这个问题。
依赖及配置
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
spring:
main:
allow-bean-definition-overriding: true
sleuth:
sampler:
probability: 1.0
enabled: true
zipkin:
base-url: http://localhost:9411/
feign:
hystrix:
enabled: true
创建影子客户端
@FeignClient(v