Создайте новый диапазон, но сохраните тот же идентификатор трассировки.JAVA

Программисты JAVA общаются здесь
Anonymous
Создайте новый диапазон, но сохраните тот же идентификатор трассировки.

Сообщение Anonymous »

У меня есть два приложения Springboot на Springboot 3 с использованием micrometer-brave.
Поэтому я отправляю несколько сообщений через Kafka с набором 'traceparent'.
Проблема заключается в том, что при использовании сообщений в пакетном режиме каждое сообщение имеет уникальный идентификатор трассировки и идентификатор диапазона, отправленные из приложения-производителя. Поскольку эти сообщения обрабатываются последовательно в одном потоке, идентификаторы трассировки и диапазона не фиксируются автоматически и не отображаются в журналах.

Код: Выделить всё

@KafkaListener(containerFactory = "tracingKafkaConsumerFactory", topics = "tracingTopic3")
public void kafkaTracingListener(ConsumerRecords consumerRecords){

consumerRecords.forEach(consumerRecord ->{
----> //do some task //  для каждой записи потребителя я хочу установить идентификатор трассировки из заголовка и начать новый диапазон.[/b]
Мои усилия ниже — это запуск нового диапазона и нового идентификатора трассировки. Но мне нужен старый идентификатор трассировки, который отправляется в заголовке Kafka
[code] String[] arr = new String(header.value(), StandardCharsets.UTF_8).split("-"); // value is like this 00-66afb33c8814286cee3c4ca3cf7f6e9b-8f2981500a0dbe79-01
Span newSpan = tracer.nextSpan().start();
var context = tracer.traceContextBuilder().traceId(arr[1]).spanId(newSpan.context().spanId())
.parentId(arr[2]).build();
tracer.spanBuilder().setParent(context).start();
try (var inScope = tracer.withSpan(newSpan)) {
log.info("consumer record {}", consumerRecord);
} finally {
newSpan.end();
}
Трассировка новичок, поэтому, возможно, некоторый контекст с ответом поможет. Заранее спасибо

Подробнее здесь: https://stackoverflow.com/questions/788 ... aceid-same

Вернуться в «JAVA»