我有 2 个服务 S1 和 S2。使用来自 S1 的带注释的 Feign 客户端(@FeignClient)调用 S2。问题是,我无法在 S2 中获取 traceId。
但是当我尝试使用 RestTemplate 调用 S2 时,它可以工作。
任何帮助将不胜感激
编辑:
我已经找出原因实际上我正在使用 Feign.Builder 下面是构建 fiegn 客户端的示例代码。
@ConditionalOnProperty(name = "feign.hystrix.enabled")
public Feign.Builder feignHystrixBuilder() {
SetterFactory setterFactory = new SetterFactory() {
@Override
public HystrixCommand.Setter create(Target<?> target, Method method) {
String groupKey = target.name();
String commandKey = target.name();
return HystrixCommand.Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey(groupKey))
.andCommandKey(HystrixCommandKey.Factory.asKey(commandKey));
}
};
return HystrixFeign.builder().setterFactory(setterFactory);
}
实际上由于上述配置.. SleuthFeignHystrixBuilder 没有被调用。我需要以我的格式设置 HysterixCommandKey .. 这就是为什么需要上面的配置。
它如何与 spring-sleuth 一起工作?