在 Spring RestTemplate 中注入 OpenTracing 的 SpanContext
Inject the OpenTracing's SpanContext in a Spring RestTemplate
我需要手动将 SpanContext
注入 Spring RestTemplate
。
由于与问题无关的原因,我不能只使用"opentracing-spring-web-starter",因为那样会与我设置的其他启动器发生冲突并导致项目崩溃。
我找到了这段与将上下文注入 HTTP 请求相关的代码片段,但我找不到与 RestTemplate
:
相关的任何内容
Tags.SPAN_KIND.set(tracer.activeSpan(), Tags.SPAN_KIND_CLIENT);
Tags.HTTP_METHOD.set(tracer.activeSpan(), "GET");
Tags.HTTP_URL.set(tracer.activeSpan(), url.toString());
tracer.inject(tracer.activeSpan().context(), Format.Builtin.HTTP_HEADERS, new RequestBuilderCarrier(requestBuilder));
任何帮助将不胜感激,提前致谢!
您可以在 java-spring-web
库中找到代码:
@Override
public ClientHttpResponse intercept(HttpRequest httpRequest, byte[] body,
ClientHttpRequestExecution execution) throws IOException {
ClientHttpResponse httpResponse;
Span span = tracer.buildSpan(httpRequest.getMethod().toString())
.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT)
.start();
tracer.inject(span.context(), Format.Builtin.HTTP_HEADERS,
new HttpHeadersCarrier(httpRequest.getHeaders()));
...
}
参考文献:
我需要手动将 SpanContext
注入 Spring RestTemplate
。
由于与问题无关的原因,我不能只使用"opentracing-spring-web-starter",因为那样会与我设置的其他启动器发生冲突并导致项目崩溃。
我找到了这段与将上下文注入 HTTP 请求相关的代码片段,但我找不到与 RestTemplate
:
Tags.SPAN_KIND.set(tracer.activeSpan(), Tags.SPAN_KIND_CLIENT);
Tags.HTTP_METHOD.set(tracer.activeSpan(), "GET");
Tags.HTTP_URL.set(tracer.activeSpan(), url.toString());
tracer.inject(tracer.activeSpan().context(), Format.Builtin.HTTP_HEADERS, new RequestBuilderCarrier(requestBuilder));
任何帮助将不胜感激,提前致谢!
您可以在 java-spring-web
库中找到代码:
@Override
public ClientHttpResponse intercept(HttpRequest httpRequest, byte[] body,
ClientHttpRequestExecution execution) throws IOException {
ClientHttpResponse httpResponse;
Span span = tracer.buildSpan(httpRequest.getMethod().toString())
.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT)
.start();
tracer.inject(span.context(), Format.Builtin.HTTP_HEADERS,
new HttpHeadersCarrier(httpRequest.getHeaders()));
...
}
参考文献: