【问题标题】:jaeger tracing and spring cloud OpenFeignjaeger tracking 和 spring cloud OpenFeign
【发布时间】:2020-02-18 14:36:02
【问题描述】:

我正在使用 spring Cloud openFeign 从 service#1 向 service#2 发出请求

当我使用 restTemplate 时,我可以在 jaeger 跟踪中正确看到 2 个请求。但是在使用 openFeign 时,我只看到 1 个请求。有没有办法整合 jaeger 和 openFeign?

我发现了这个: https://www.baeldung.com/spring-cloud-openfeign
https://github.com/OpenFeign/feign-opentracing

【问题讨论】:

    标签: java spring jaeger openfeign


    【解决方案1】:

    spring-cloud-openfeign 来自 spring-cloud 系列,一旦您添加 opentracing-spring-jaeger-cloud-starterhere 所述,应自动检测。 但有时(取决于您如何创建 feign 客户端 bean)您需要显式地将 bean 公开给 spring 上下文,以便自动配置可以检测您的 Feign 客户端。

    类似这样的:

    @Scope("prototype")
    fun feignClient() : Client {
        return Client.Default(null, null)
    }
    

    它是 kotlin,但你可以适应。

    【讨论】:

    • 你能说得更清楚些吗?我的 Spring Boot 应用程序上有这个 @EnableFeignClients(clients = {MyFeignClient.class}),这还不够吗?有什么已知问题吗?
    • 客户端(来自 feign)类的自动配置工具。但它需要显式暴露给 spring 上下文,否则它将创建一个不会被检测的新上下文
    • 添加后我的测试失败:at my.package.feign.FeignAutoConfigurationTest.testWithAuthentication(FeignAutoConfigurationTest.java:86) ... Caused by: java.net.UnknownHostException: test-service 我现在需要添加到测试中吗?
    • 很可能您在创建 feign 客户端时覆盖了您的主机地址。