Как запустить новый контекст трассировки в середине выполнения - PullRequest
0 голосов
/ 04 августа 2020

У меня есть задания, состояние которых сохраняется в базе данных, если выполняются некоторые требования, эти задания извлекаются из базы данных и запускаются снова. Эта система использует Rx Java с пружиной.

Чего я хотел бы достичь: когда такое задание запускается снова, я хочу иметь traceId с тем же значением, когда это задание было сохранено в db. Пример:

  1. Задание запускается с traceId A
  2. Задание сохраняется с traceId A и ожидает некоторых необходимых данных / событий
  3. Другой процесс запускается с traceId B
  4. Процесс с traceId B задание разблокировки с traceId A для повторной обработки

В том случае, когда я буду обрабатывать задание, оно будет с traceId B . Моя текущая наивная реализация заключалась в том, чтобы вставить его в MDC, но он работает только в рамках Single.map и не распространяется внутри Completables или Singles. Я предполагаю, что это может потребовать некоторого взлома, потому что я не смог найти подобного варианта использования в храброй документации и spring-сыщик. Более того, если будет проще, меня не волнует spanId, единственное, что мне важно, это traceId.

...