微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为@FeignClient

如何解决为@FeignClient

我正在使用以下命令运行 Spring Boot 应用程序:

  • Spring Boot 2.3.8
  • Spring Cloud Hoxton.SR10

我已声明 spring-cloud-starter-zipkinspring-cloud-starter-openfeign 依赖项,并将我的应用程序配置为指向 Zipkin 服务器。它是一个非常简单的设置和配置(我还声明了 spring-cloud-starter-netflix-ribbonspring-cloud-starter-kubernetes-all 依赖项 o 允许 Spring Feign 使用 k8s 服务发现)。

我的应用声明了一个带有 @SpringFeign 注释的接口,其中包含调用远程服务 S方法

因此,通常 zipkin 正在从我的应用中获取 span(例如传入的 REST 调用),并且 B3 标头通过 HTTP 传播到通过 feign 调用的服务 S

但是 zipkin 没有报告我的应用程序中代表对 S 的 Feign 调用的跨度。 这是应该“发生”的事情,还是我遗漏了一块拼图?

我可以例如将 @NewSpan 添加到 feign 接口方法,但这并没有为我提供请求/响应的 HTTP 详细信息作为 span 标记。如果这应该是开箱即用的,我宁愿不这样做。

解决方法

这应该是开箱即用的:https://docs.spring.io/spring-cloud-sleuth/docs/2.2.7.RELEASE/reference/html/#feign

可以看一下feign示例(需要回溯历史,目前是3.x):https://github.com/spring-cloud/spring-cloud-sleuth/tree/master/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-feign

为了查看传播是否有效,请查看传出请求,它应该包含与跟踪相关的标头。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。