Spring 云流消息的侦探检测在使用 zipkin + kafka 时丢失

Sleuth instrumentation of Spring cloud stream messages is lost when using zipkin + kafka

我有以下设置:

曾经有一个 StreamEnvironmentPostProcessor that did the job of adding the trace headers to the kafka bindings when I included the spring-cloud-sleuth-stream dependendy in the past. But the doc clearly states now :

Note: spring-cloud-sleuth-stream is deprecated and incompatible with these destinations

现在我应该怎么做才能使它正常工作?自己将 headers 添加到绑定配置中?还是我遗漏了什么?

这是 Spring Cloud Sleuth in Edgware 中的错误。 Edgware 中的 Stream Kafka Binder 需要显式传递应该传播的 headers。在类路径上添加 sleuth-stream 的副作用正是这个特性。通过修复 https://github.com/spring-cloud/spring-cloud-sleuth/issues/1005 问题,我们将缺少的功能添加回核心。这没有移植到 Finchley,因为 Finchley 中的 Stream Kafka Binder 默认通过所有 headers。

Edgware 的解决方法是按以下方式传递 headers 的列表:

spring:
  cloud:
    stream:
      kafka:
        binder:
          headers:
            - spanId
            - spanSampled
            - spanProcessId
            - spanParentSpanId
            - spanTraceId
            - spanName
            - messageSent