gpt4 book ai didi

java - 如何在 Spring Sleuth 中的响应式(Reactive)调用链中命名 Span

转载 作者:行者123 更新时间:2023-12-02 10:37:42 25 4
gpt4 key购买 nike

我有 Spring Cloud Sleuth (2.0.2.RELEASE) 在一些基于 Web 的请求/响应系统中的(部分) react 类中工作。代码是这样的:

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 中理解的。

所以我的第一个问题是:如何为此类异步线程关联一个名称?我没有地方可以放置 @SpanName

作为后续,有什么方法可以不收集这些跨度?我不需要它们,它们填满了我们的 Zipkin 存储,但我也不想一般禁用响应式(Reactive)或 Sleuth,因为其他地方需要它......

Screenshot from Zipkin

最佳答案

您可以创建自己的自定义 SpanAdjuster 来修改跨度名称。您还可以使用 FinishedSpanHandler 对完成的跨度进行操作以对其进行调整。

关于java - 如何在 Spring Sleuth 中的响应式(Reactive)调用链中命名 Span,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53154813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com