我从一个微服务调用一个微服务,并期望从基本服务启动的traceID(由sleuth给出)应该作为植入zipkin的sleuth传输到被调用的服务。
这是对服务的调用
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
);
预期在上述服务的日志中打印的相同traceID也将在被调用服务的日志中打印。在这种情况下,在http://localhost:8089/poc1/message的日志中应打印相同的跟踪ID。但是,这种情况没有发生。
使用2.7.5版本的 Spring Boot 和2021.0.4版本的Spring云。
有什么线索吗?
预期由初始请求生成的相同traceID应打印在被调用服务的日志中。
1条答案
按热度按时间qvsjd97n1#
您正在通过new创建
RestTemplate
。请将其创建为bean并将其注入到代码中。我们在文档中用一个大大的惊叹号写在这里https://docs.spring.io/spring-cloud-sleuth/docs/current/reference/html/integrations.html#sleuth-http-client-rest-template-integration
我贴一下方便你
您必须将RestTemplate注册为bean,以便插入拦截器。如果您使用新的关键字创建RestTemplate示例,则检测不起作用。