SpringCloud 前綴字段

2023-12-01 15:44 更新

如果它們遵循通用模式,則還可以在字段前面加上前綴。以下示例顯示了如何按原樣傳播x-vcap-request-id字段,但如何分別以x-baggage-country-codex-baggage-user-id的形式發(fā)送country-codeuser-id字段:

Tracing.newBuilder().propagationFactory(
  ExtraFieldPropagation.newFactoryBuilder(B3Propagation.FACTORY)
                       .addField("x-vcap-request-id")
                       .addPrefixedFields("x-baggage-", Arrays.asList("country-code", "user-id"))
                       .build()
);

以后,您可以調(diào)用以下代碼來影響當(dāng)前跟蹤上下文的國家/地區(qū)代碼:

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,您必須傳遞行李鑰匙列表。有兩個(gè)屬性可以實(shí)現(xiàn)此目的。使用spring.sleuth.baggage-keys,您可以為HTTP呼叫設(shè)置前綴為baggage-的密鑰,而為消息傳遞則設(shè)置前綴baggage_的密鑰。您還可以使用spring.sleuth.propagation-keys屬性來傳遞已列入白名單且沒有任何前綴的前綴鍵列表。注意,標(biāo)題鍵前面沒有x-。

為了自動(dòng)將行李值設(shè)置為Slf4j的MDC,您必須使用白名單中的行李和傳播鍵列表來設(shè)置spring.sleuth.log.slf4j.whitelisted-mdc-keys屬性。例如,spring.sleuth.log.slf4j.whitelisted-mdc-keys=foo會將foo行李的價(jià)值設(shè)置為MDC。

請記住,將條目添加到MDC可能會大大降低應(yīng)用程序的性能!

如果要將行李條目添加為標(biāo)簽,以使可以通過行李條目搜索spans,則可以將白名單中的行李鑰匙列表設(shè)置為spring.sleuth.propagation.tag.whitelisted-keys要禁用此功能,您必須傳遞spring.sleuth.propagation.tag.enabled=false屬性。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號