Ano*_*oop 9 spring-cloud spring-cloud-sleuth
我目前正在我们的项目中实施 Spring Cloud Sleuth。我需要将 traceId 添加到响应标头中。有没有办法做到这一点?
谢谢,
阿努普
小智 10
使用raj-kumar-bhakthavachalam示例但使用 springframework.cloud.sleuth 2.1.1 版,您可以使用以下步骤:
1.自动连线的brave.Tracer
@Autowired
Tracer tracer
Run Code Online (Sandbox Code Playgroud)
2、CurrentSpan返回TraceContext,得到traceIdString
tracer.currentSpan().context().traceIdString()
Run Code Online (Sandbox Code Playgroud)
有 2 个选项。一种是提供自定义提取器 - http://cloud.spring.io/spring-cloud-sleuth/1.0.x/#_customizations(使用 1.2.0 版本会更容易)。另一种选择(更快)是创建您自己的过滤器,该过滤器将在执行 TraceFilter 后和关闭之前注册。您可以在那里运行tracer.getCurrentSpan()并向响应添加所需的任何信息。
如果您使用球衣,一种方法是添加球衣响应过滤器并使用来自 spring sleuth 的 Trace(自动装配)
org.springframework.cloud.sleuth.Tracer
公共类 TraceHeaderInterceptor 实现 ContainerResponseFilter {
@覆盖
公共无效过滤器(ContainerRequestContext requestContext,ContainerResponseContext responseContext)抛出IOException {
val responseHeaders = responseContext.getHeaders();
if (!responseHeaders.containsKey(TRACE_ID_HEADER_NAME)) {
val traceId = tracer.getCurrentSpan().context().traceIdString();
responseHeaders.add(TRACE_ID_HEADER_NAME,traceId);
}
}
私有静态最终字符串TRACE_ID_HEADER_NAME =“X-B3-Traceid”;
私有最终 Tracer 跟踪器;
公共TraceHeaderInterceptor(跟踪器跟踪器){
this.tracer = 跟踪器;
}
}
我们将其添加到 API 网关中,以避免更改每个微服务
在 Spring Sleuth 3.0.x中,这里是来自官方文档的示例。
@Component
@Order(TraceWebServletAutoConfiguration.TRACING_FILTER_ORDER + 1)
class MyFilter extends GenericFilterBean {
private final Tracer tracer;
MyFilter(Tracer tracer) {
this.tracer = tracer;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
Span currentSpan = this.tracer.currentSpan();
if (currentSpan == null) {
chain.doFilter(request, response);
return;
}
// for readability we're returning trace id in a hex form
((HttpServletResponse) response).addHeader("ZIPKIN-TRACE-ID",
currentSpan.context().traceIdString());
// we can also add some custom tags
currentSpan.tag("custom", "tag");
chain.doFilter(request, response);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15647 次 |
| 最近记录: |