2017-04-18 114 views
-1

當Spring集成(彈簧引導)應用程序調用Spring引導應用程序以偵測traceID和spanID的來源時,會出現問題。spring-cloud-sleuth(引導)與彈簧集成的集成

URL調用 - >外觀(寫在春天集成,春天引導和支持偵探) - >春季啓動的microService(獵犬支持)

的microService 1:Spring集成HTTP調用

的microService 2: spring boot其餘控制器

這裏是兩個微服務的日誌的詳細信息。

微服務1呼叫的microService 2

Microserice 1日誌:

2017年4月18日17:42:31.887 [0;39米[32米INFO [CS門面,ff711e7b275d03a7, b3f14f1a5cf6bd1d,真] [0;39米[35m6280 [0;39米[2M --- [0;39米[2M [

的microService 2日誌:

[2m2017-04-18 17:43:26.133 [0;39米[32米INFO [ - ,32226de675c3a463,32226de675c3a463,假] [0;39米[35m14184 [0;39米[2M --- [0;39米[2M [NIO-8083-EXEC-1] [0;39米[36mc.t.cloud.resource.HelloResource

雖然,兩者都具有相同的請求呼叫,traceID是不同的。 當兩個應用程序都是純彈簧引導應用程序並且沒有使用http spring集成時,它可以很好地工作。

的microService 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> 

的microService 2碼

@GetMapping(value = "/micro2") 
public String hello() { 

    LOGGER.info("Reached micro2"+accessor.getCurrentSpan()); 
    return "HelloWorld"; 
} 
+0

歡迎來到SO。你的問題到底是什麼? –

+0

更新了問題。 thx – Atul

回答

0

我很抱歉,但你格式化代碼,並以這樣的方式,我不太瞭解的寫的文字是什麼問題是。如果這兩個應用程序都是Spring Boot並且一切正常工作?這並不奇怪,因爲Sleuth是一個基於Boot的庫。這意味着使用Boot和Sleuth註冊所有必要的組件就足夠了。在非Spring Boot應用程序的情況下,你基本上必須自己完成所有的工作。這意味着通過HTTP或消息傳遞跟蹤標頭。

+0

道歉,我已經更新了這個問題。是的,如果沒有春天整合http呼出電話,一切正常。但是,通常在微服務體系結構中,EAI框架(如Spring集成)用於門面級別。當我使用頻道攔截器記錄頻道時,我可以看到該頭文件具有traceID,spanID和URL信息,但它沒有傳遞給第二個微服務。我正在使用春季啓動與門面微服務的彈簧集成。我會對http頭進行一些研究。 – Atul

+0

在http和amqp報頭中添加了mapped-request-headers =「http_requestUrl,X-B3-TraceId,X-B3-SpanId,X-Span-Name」。它運作良好。謝謝。 – Atul

+0

很酷。你能把這個標記爲已回答嗎? –