У меня есть 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
здесь.
В качестве продолжения, есть ли способ НЕ собирать эти промежутки? Мне они не нужны, они заполняют наше Зипкинское хранилище, но отключать реактив или вообще Слейт тоже не хочется, так как он нужен в других местах...