Я вызываю микрослужбу из микрослужбы и ожидаю, что идентификатор трассировки (предоставленный сыщиком), инициированный из базовой службы, должен перемещаться к вызываемым службам в качестве имплантированного сыщика с 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.
Любая подсказка, что здесь не так?
Ожидается, что тот же идентификатор трассировки, сгенерированный первоначальным запросом, должен быть напечатан в журналах вызываемой службы.
Вы создаете 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 и вставляю его в код, и это сработало для меня. Большое спасибо за ваш вклад.