如何使用sleuth 2.0添加自定义traceId?

时间:2020-06-10 01:02:48

标签: spring-boot spring-cloud-sleuth

我正在尝试使用sleuth 2.0(brave)为下游应用程序添加自定义traceId,以便我们可以基于自定义traceId跟踪日志。我正在通过Rabbitmq队列将消息从主应用程序发送到下游应用程序。在网络上浏览时,请完成此link。他们建议使用跟踪筛选器。

@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);
    }

}

如何实现此跟踪筛选器以自定义traceId?对于从主应用程序到下游应用程序的traceId传播,此跟踪筛选器是否对消息使用者有帮助?还是我们还有其他方法? 我是侦探的新手。有人可以建议我吗?会很有帮助。

0 个答案:

没有答案