java如何在Spring Sleuth中以反应式调用链命名Span
我让Spring Cloud Sleuth(2.0.2.RELEASE)在一些基于web的请求/响应系统中的(部分)反应类中工作。代码是这样的:
private static final Scheduler PROCESSING_SCHEDULER = Schedulers.newParallel("processingScheduler");
public Set<ProcessedItem> processItems(List<Item> incomingItems) {
return Flux.fromIterable(incomingItems)
.publishOn(PROCESSING_SCHEDULER)
.collectMultimap(Item::getRequestIdentifier)
.flatMapIterable(Map::values)
.flatMap(itemProcessor::processGroupedItems)
.collect(Collectors.toSet())
.block();
}
由于总是有很多响应出现,因此对于一个请求,这个方法会被调用数百次。
我怀疑这个用.publishOn
的调用会导致Zipkin中成百上千个async
跨度(见附件屏幕截图)。至少我假设跨度是从那来的,因为这是我从the documentation中理解的
所以我的第一个问题是: 我如何为这种异步线程关联一个名称?我没有地方放在这里
作为跟进,有没有办法不收集这些跨度?我不需要它们,它们填满了我们的Zipkin存储空间,但我也不想禁用一般的反应式或侦探,因为它在其他地方是需要的
# 1 楼答案
您可以创建自己的自定义
SpanAdjuster
来修改跨度名称。您还可以使用FinishedSpanHandler
对完成的跨距进行操作,以调整跨距