Почему Kafka ProducerListener не регистрирует идентификатор трассировки и идентификатор диапазона? - PullRequest
0 голосов
/ 03 октября 2019

У меня есть экземпляр Kafka и простое приложение весенней загрузки с одним контроллером REST и компонентом ProducerListener. Контроллер принимает простое сообщение String и отправляет его Кафке через KafkaTemplate. Я хочу, чтобы ProducerListener зарегистрировал информационное сообщение, но идентификатор трассы и идентификатор диапазона отсутствуют. На мой взгляд, это должно быть включено в журнал.

Я использую Spring Cloud Sleuth и Spring Kafka.

Само сообщение успешно отправляется через тему Kafka в другое приложение весенней загрузки, которое получаетидентификатор трассировки правильно, поэтому я предполагаю, что проблема связана только с ProducerListener.

Отладка

Я попытался отладить код, и я оказался в методе TracingProducer.send(..). Экземпляр span там NoopSpan (это было странно), и из-за этого TracingCallback не переносит Callback и информация трассировки теряется. Есть некоторые неприятные битовые операции, которые я не мог понять. Вот такая баночка brave-instrumentation-kafka-clients-5.7.0.jar

код

контроллер

@PostMapping("/pass-to-kafka")
public void passToKafka(@RequestBody String message) {
   logger.info("This log message has trace id and span id");
   kafkaTemplate.send("my-test-topic", message);
}

продюсер слушатель

@Bean
public ProducerListener myProducerListener() {
    return new ProducerListener<>() {
        @Override
        public void onSuccess(ProducerRecord producerRecord, RecordMetadata recordMetadata) { 
            logger.info("This log message is missing trace id and span id");
        }
    };
}

проект с кодомнаходится на GitHub: https://github.com/vaclavnemec/kafka-sleuth-problem

Я ожидаю, что в информационном сообщении будет записан идентификатор трассы и идентификатор диапазона. Это должны быть одинаковые значения в обоих регистраторах.

INFO [bar,208706b5c40f8e93,208706b5c40f8e93,false] com.example.demo.Controller: This log message has trace id and span id
.
.
.
INFO [bar,,,] com.example.demo.DemoApplication: This log message is missing trace id and span id

1 Ответ

0 голосов
/ 09 октября 2019

Пожалуйста, установите spring.sleuth.probability=1.0, как описано в документации и в файле readme. Тогда вы включите трассировку.

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