SpringCloud 前缀字段
2023-12-01 15:44 更新
如果它们遵循通用模式,则还可以在字段前面加上前缀。以下示例显示了如何按原样传播x-vcap-request-id
字段,但如何分别以x-baggage-country-code
和x-baggage-user-id
的形式发送country-code
和user-id
字段:
Tracing.newBuilder().propagationFactory( ExtraFieldPropagation.newFactoryBuilder(B3Propagation.FACTORY) .addField("x-vcap-request-id") .addPrefixedFields("x-baggage-", Arrays.asList("country-code", "user-id")) .build() );
以后,您可以调用以下代码来影响当前跟踪上下文的国家/地区代码:
ExtraFieldPropagation.set("x-country-code", "FO"); String countryCode = ExtraFieldPropagation.get("x-country-code");
或者,如果您有对跟踪上下文的引用,则可以显式使用它,如以下示例所示:
ExtraFieldPropagation.set(span.context(), "x-country-code", "FO"); String countryCode = ExtraFieldPropagation.get(span.context(), "x-country-code");
与以前版本的Sleuth的不同之处在于,使用Brave,您必须传递行李钥匙列表。有两个属性可以实现此目的。使用spring.sleuth.baggage-keys
,您可以为HTTP呼叫设置前缀为baggage-
的密钥,而为消息传递则设置前缀baggage_
的密钥。您还可以使用spring.sleuth.propagation-keys
属性来传递已列入白名单且没有任何前缀的前缀键列表。注意,标题键前面没有x-
。
为了自动将行李值设置为Slf4j的MDC,您必须使用白名单中的行李和传播键列表来设置spring.sleuth.log.slf4j.whitelisted-mdc-keys
属性。例如,spring.sleuth.log.slf4j.whitelisted-mdc-keys=foo
会将foo
行李的价值设置为MDC。
请记住,将条目添加到MDC可能会大大降低应用程序的性能!
如果要将行李条目添加为标签,以使可以通过行李条目搜索spans,则可以将白名单中的行李钥匙列表设置为spring.sleuth.propagation.tag.whitelisted-keys
。要禁用此功能,您必须传递spring.sleuth.propagation.tag.enabled=false
属性。
以上内容是否对您有帮助:
更多建议: