У меня Spring Cloud Sleuth (2.0.2.RELEASE) работает в (частично) реактивном классе в некоторой веб-системе запросов / ответов. Код выглядит примерно так:
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
приводит к сотням и тысячам async
промежутков в Zipkin (см. Прикрепленный скриншот). По крайней мере, я предполагаю, что промежутки от этого, потому что это то, что я понимаю из документации
Итак, мой первый вопрос:
Как я могу связать имя для таких асинхронных потоков? У меня нет места, чтобы поместить @SpanName
здесь.
Как продолжение, есть ли способ НЕ собрать эти промежутки? Они мне не нужны, они заполняют наше хранилище Zipkin, но я также не хочу отключать реактив или Sleuth вообще, так как это нужно в других местах ...
Скриншот из Zipkin