TraceID для запроса не перемещается между службами

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

Вот звонок в сервис

RestTemplate restTemplate = new RestTemplate();
logger.info("ApplicationController: controllerMessage() called: " + properties.getType() +
                " " + properties2.getMode());
String uri = "http://localhost:8089/poc1/message";
//String uri = "http://google.com";
        
        
HttpHeaders headers = new HttpHeaders();
//headers.add("Authorization", authToken);
HttpEntity request = new HttpEntity(headers);
        
ResponseEntity<String> response = restTemplate.exchange(
                uri,
                HttpMethod.GET,
                request,
                String.class
            );

Ожидается, что тот же идентификатор трассировки, напечатанный в журналах вышеуказанной службы, будет напечатан в журналах вызываемой службы. В этом случае тот же идентификатор трассировки должен отображаться в журналах http://localhost:8089/poc1/message. Однако этого не происходит.

Использование весенней загрузки версии 2.7.5 и весеннего облака 2021.0.4.

Любая подсказка, что здесь не так?

Ожидается, что тот же идентификатор трассировки, сгенерированный первоначальным запросом, должен быть напечатан в журналах вызываемой службы.

0
0
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы создаете RestTemplate через new. Пожалуйста, создайте его как bean-компонент и вставьте в свой код.

@Bean
RestTemplate restTemplate() {
  return new RestTemplate();
}

Мы пишем это в документах с большим восклицательным знаком здесь https://docs.spring.io/spring-cloud-sleuth/docs/current/reference/html/integrations.html#sleuth-http-client- интеграция шаблонов отдыха

Позвольте мне вставить это для вашего удобства

Вы должны зарегистрировать RestTemplate как bean-компонент, чтобы перехватчики вводились. Если вы создаете экземпляр RestTemplate с новым ключевым словом, инструментарий НЕ работает.

Большое спасибо за ваш ответ Марцин. Ты прав. Я создаю RestTemplate Bean и вставляю его в код, и это сработало для меня. Большое спасибо за ваш вклад.

win32trojan 26.11.2022 14:07

Другие вопросы по теме