我们有一个使用spring-cloud-starter-zipkin的spring-boot应用程序(spring-boot-starter-parent-2.0.0.RELEASE),用于将“跨度”写入zipkin。
我们也使用spring-integration(通过spring-boot-starter-integration),并且添加了带有PollableChannel的集成流程以供轮询器使用:
@Bean
public PollableChannel pollableChannel() {
return new QueueChannel(100);
}
@Bean
@ServiceActivator(poller = @Poller(taskExecutor="batchTaskExecutor"),
inputChannel= "pollableChannel")
public MyHandler myHandler() {
return new MyHandler();
}
自从添加此配置以来,我们每秒都有一个“异步”跨度。似乎此范围来自@Poller,检查队列中是否有项目。
我想知道如何控制此范围。可以禁用吗?特别是如果没有物品。
谢谢!
答案 0 :(得分:1)
如果它来自@Scheduled
方法,则可以使用https://github.com/spring-cloud/spring-cloud-sleuth/blob/master/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/SleuthSchedulingProperties.java#L38(spring.sleuth.scheduled.skipPattern
)查找并禁用该线程。如果您说它的名称为async
,则表示它来自TraceRunnable
或TraceCallable
。要摆脱这一点可能是有问题的。您可以在Sleuth中提出问题,以允许SpanAdjuster
实际上不将跨度发送到Zipkin(例如,返回null
)。您也可以尝试在所有spring.sleuth.async.enabled
上禁用异步功能。如果您不使用异步的任何其他功能,那么这些功能都不应干涉。