Используйте Openzipkin Brave для отслеживания с помощью ForkJoinPool - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь применить Openzipkin Brave к приложению, чтобы помочь отслеживать трассировку с помощью Logback.Приложение является весенним приложением webmvc и использует ForkJoinPool.

Трассировка в основном потоке (весенняя часть webmvc) работает, но у меня возникают трудности при передаче контекста трассировки в ForkJoinThread.В моем понимании контекст трассировки хранится в threadlocal, который, очевидно, не доступен для ForkJoinWorkerThread (или ForkJoinTask).Интересно, как я могу заставить это работать.

1 Ответ

0 голосов
/ 24 сентября 2018

РЕДАКТИРОВАТЬ: Мы обнаружили во время ответа на этот вопрос, что ForkJoinPool в настоящее время не работает с Brave.Из-за ограничений API на класс мы еще не смогли найти решение.

Следующее предполагает использование Brave версии 5 (она также может работать на 4):

API CurrentTraceContextдает нам метод: executorService, который мы можем использовать, чтобы обернуть ExecutorService.Поэтому вам нужно будет сделать что-то вроде следующего:


    ForkJoinPool fjp = ...;
    CurrentTraceContext ctc = Tracing.currentTraceContext();
    ExecutorService wrappedExecutorService = ctc.executorService(fjp);

Затем вы используете wrappedExecutorService так же, как вы используете ForkJoinPool

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...