当 Spring Integration(spring boot) 应用程序调用 Spring boot 应用程序以对 traceID 和 spanID 进行侦探日志记录时,就会出现问题。
URL调用--> Facade(用spring集成编写,spring boot并支持sleuth)--> Spring boot微服务(支持Sleuth)
微服务一:spring集成Http调用
微服务 2:spring boot 休息控制器
这是两个微服务的日志的详细信息。
微服务 1 调用微服务 2
微服务 1 日志:
2017-04-18 17:42:31.887[0;39m [32m INFO [CS Facade, ff711e7b275d03a7 ,b3f14f1a5cf6bd1d,true][0;39m [35m6280[0;39m [2m---[0;39m [2m[
微服务 2 日志:
[2m2017-04-18 17:43:26.133[0;39m [32m INFO [-, 32226de675c3a463 ,32226de675c3a463,false][0;39m [35m14184[0;39m [2m---[0;39m [2m[nio -8083-exec-1][0;39m [36mc.t.cloud.resource.HelloResource
虽然,两者都有相同的请求调用,但 traceID 是不同的。当两个应用程序都是纯 spring boot 应用程序并且没有使用 http spring 集成时,它可以完美运行。
微服务 1 代码
<int-http:outbound-gateway id="getAccount"
url="http://localhost:8083/rest/hello/micro2"
request-channel="receiveChannel" reply-channel="publishsubscribechannel"
http-method="GET" expected-response-type="java.lang.String">
</int-http:outbound-gateway>
微服务 2 代码
@GetMapping(value = "/micro2")
public String hello() {
LOGGER.info("Reached micro2"+accessor.getCurrentSpan());
return "HelloWorld";
}