春季侦探行李的繁殖没有传播/正常工作

时间:2020-06-27 18:56:01

标签: spring spring-cloud-sleuth

我们当前正在使用侦探2.2.3.RELEASE,我们看不到在HTTP标头中传递的userId字段没有传播。下面是我们的代码。

BaggageField REQUEST_ID = BaggageField.create("x-vcap-request-id");
    BaggageField USER_ID = BaggageField.create("userId");
    
    Tracing.newBuilder().propagationFactory(
            BaggagePropagation.newFactoryBuilder(B3Propagation.FACTORY)
            .add(SingleBaggageField.remote(REQUEST_ID))
            .add(SingleBaggageField.newBuilder(USER_ID).addKeyName("baggage-user-id").build())
            .build());

我们怀疑YML文件中是否存在某些问题。我们尝试了以下所有选项,但没有一个起作用。

#1 baggage-keys: baggage-user-id 
#2 propagation-keys: baggage-user-id
#3 baggage-keys: user-id 

在登录中:

%X {baggage-user-id:-}

我们正在像http标头中那样传递userId。

1 个答案:

答案 0 :(得分:0)

请不要创建自己的跟踪实例。您可以创建最终将在跟踪Bean内的Bean。

这里有一个使用最新的3.x api的示例

spring:
 sleuth:
  baggage:
   correlation-fields:
    - TEST-COMMUNICATION-TYPE
   remote-fields:
    - TEST-COMMUNICATION-TYPE

旧的,已弃用的api

spring:
  application:
    name: service1
  sleuth:
    baggage-keys:
      - baggage
      - key
    log.slf4j.whitelisted-mdc-keys:
      - key

我们如何取回行李

log.info("Service2: Baggage for [key] is [" + BaggageField.getByName("key") + "]");

我们如何设置行李

String baggageKey = "key";
    String baggageValue = "foo";
    BaggageField baggageField = BaggageField.create(baggageKey);
    baggageField.updateValue(baggageValue);