我们当前正在使用侦探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。
答案 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);