我正在尝试使用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传播,此跟踪筛选器是否对消息使用者有帮助?还是我们还有其他方法? 我是侦探的新手。有人可以建议我吗?会很有帮助。