我在我的 Web 应用程序中使用 spring-cloud-sleuth。不幸的是,我接到电话的第三方正在 X-B3-TraceId 标头中发送 UUID。但是在从字符串转换为十六进制时,由于 UUID 中的“-”字符,spring 中的 TraceFilter 可能会发现错误。所以我决定编写自己的过滤器,它将在 TraceFilter 之前拦截请求并从标头中删除跟踪 id。这是我的配置:
@Bean
public FilterRegistrationBean getZipkinFilterRegistrationBean() {
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new ZipkinHeaderReplaceFilter());
bean.setOrder(1);
bean.addUrlPatterns("/");
return bean;
}
这是来自 spring-cloud-sleuth 的 TraceFilter:
@Order(TraceFilter.ORDER)
public class TraceFilter extends GenericFilterBean {
protected static final int ORDER = Ordered.HIGHEST_PRECEDENCE + 5;
.........
}
所以跟踪过滤器的顺序是准确的-2147483643
,我认为这使它出现在我的过滤器之前。我不想更改过滤器的顺序。由于Spring Boot 自动配置自动注册,如何更改TraceFilter
to的顺序?2
TraceFilter