如何禁用Spring PubSub生成的pubsubsubscriberthreadpool追踪Span?
解决方案
1. 修正Span名称匹配规则
先确认pubsubsubscriberthreadpool是否是Span的完整名称。如果实际Span名称是带后缀的形式(比如pubsubsubscriberthreadpool-1、pubsubsubscriberthreadpool-executor),精确匹配的正则会失效,改用模糊匹配的正则:
spring: zipkin: base-url: http://localhost:9411 service: name: notes-api sleuth: span-filter: additional-span-name-patterns-to-ignore: ".*pubsubsubscriberthreadpool.*" enabled: true
2. 适配Sleuth版本调整配置项
不同版本的Spring Sleuth配置逻辑有差异:
- 若使用Sleuth 3.x及以上版本,可尝试全局忽略规则替代
span-filter:
spring: sleuth: ignore-patterns: ".*pubsubsubscriberthreadpool.*"
- 若使用Sleuth 2.x,务必保证YAML缩进正确(你的示例中
spring子项缩进有误,修正后结构如上)。
3. 自定义SpanFilter实现精准过滤
如果配置方式始终不生效,直接通过自定义Bean手动过滤目标Span:
import brave.Span; import brave.sampler.SamplerFunction; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SleuthConfig { @Bean public SamplerFunction<Span> spanSampler() { return span -> { String spanName = span.name(); if (spanName.contains("pubsubsubscriberthreadpool")) { return false; // 不采样,不发送到Zipkin } return true; }; } }
4. 调整PubSub追踪配置
如果该Span是GCP PubSub内部组件生成的,可直接禁用PubSub相关追踪(注意:此操作会关闭所有PubSub相关Span):
spring: gcp: pubsub: trace: enabled: false
若需要保留部分PubSub追踪,建议结合自定义SpanFilter使用。
内容的提问来源于stack exchange,提问作者NikMashei
相关产品推荐
相关产品推荐

