spring cloud sleuth(boot)与spring集成的集成
当Spring集成(Spring boot)应用程序调用Spring boot应用程序以从中对traceID和spanID进行搜索记录时,就会出现问题 URL调用-->Facade(用spring集成、spring引导和支持sleuth编写)-->spring引导微服务(支持sleuth) 微服务1:spring集成Http调用 微服务2:弹簧引导休息控制器 下面是两个微服务的日志的详细信息 微服务1调用微服务2 Microserice 1日志: 2017-04-18 17:42:31.887[0;39m[32m信息[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信息[-,3226DE675C3A463,3226DE675C3A463,false][0;39m[35m14184[0;39m[2m-[0;39m[2m-[nio-8083-exec-1][0;39m[36mc.t.cloud.resource.HelloResource] 虽然两者都有相同的请求调用,但traceID是不同的。 当两个应用程序都是纯spring引导应用程序且未使用http spring集成时,它工作得非常完美 微服务1代码spring cloud sleuth(boot)与spring集成的集成,spring,spring-cloud-sleuth,Spring,Spring Cloud Sleuth,当Spring集成(Spring boot)应用程序调用Spring boot应用程序以从中对traceID和spanID进行搜索记录时,就会出现问题 URL调用-->Facade(用spring集成、spring引导和支持sleuth编写)-->spring引导微服务(支持sleuth) 微服务1:spring集成Http调用 微服务2:弹簧引导休息控制器 下面是两个微服务的日志的详细信息 微服务1调用微服务2 Microserice 1日志: 2017-04-18 17:42:31.887[
<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>
@GetMapping(value = "/micro2")
public String hello() {
LOGGER.info("Reached micro2"+accessor.getCurrentSpan());
return "HelloWorld";
}
很抱歉,您格式化代码并编写文本的方式让我几乎无法理解问题所在。如果两个应用程序都是Spring Boot,并且一切正常?这并不奇怪,因为Sleuth是基于引导的库。这意味着使用引导就足够了,并且Sleuth注册了所有必要的组件。如果是非Spring Boot app您基本上必须自己完成所有工作。这意味着通过HTTP或消息传递跟踪头。直到Sleuth 2.1.0,spring integration不会自动传播X-B3*头
解决方法。欢迎来到SO。您的问题是什么?更新了问题。thxApologize,我已经更新了问题。是的,如果没有spring integration http出站调用,一切正常。但是,通常在微服务体系结构中,像spring integration这样的EAI框架在门面级别使用。我可以看到当我使用通道拦截器记录通道时,eader有traceID、spanID和URL信息,但它没有传递给第二个微服务。我正在使用spring boot和spring integration for facade微服务。我将对http头进行一些研究。添加了映射请求头=“http_requestUrl,X-B3-traceID,X-B3-spanID,X-Span-Name”在http和amqp头中。它工作得很好。谢谢。