@Inject
Baggage baggage;
// ...
try (final Scope scope = baggage.toBuilder()
.put("legumeId", legumeItem.getId()) // some data you need to send
.build()
.makeCurrent()) {
// ... send things to other service
}
字符串 另一方面,要检索行李属性,您可以:
@Inject
Baggage baggage;
// ...
log.info("legumeId: {}", baggage.getEntryValue("legumeId"));
// or, to see all the map entries:
baggage.asMap().forEach((k, v) -> log.info("baggage: {}={}", k, v.getValue()));
2条答案
按热度按时间mrphzbgm1#
是,在Quarkus中,使用OpenTelemetry默认值W3C自动传播行李。假设您使用的是HTTP通信...
有多种方法可以丰富你的包袱。这是一个使用Quarkus 3.x的示例:
字符串
另一方面,要检索行李属性,您可以:
型
请注意,OpenTelemetry是与跟踪不同的API。它应该用于传输应用程序context data。我不确定耶格能不能展示出来。最有可能的是,它永远不会到达那里,因为它应该在服务之间的调用的头中传播,而不是到收集器端。
aemubtdh2#
Baggage是一个运行时的概念,它的目的是使应用程序在分布式请求的不同跳上可以访问某些信息。使用OpenTelemetry,行李可以在没有任何跟踪的情况下工作。如果希望在跟踪中捕获行李,则需要通过
span.setAttribute
显式地执行此操作。