spring-cloud-sleuth(boot)与spring-integration的集成

时间:2017-04-18 08:06:36

标签: spring spring-cloud-sleuth

当Spring Integration(spring boot)应用程序调用Spring引导应用程序进行traceID和spanID的侦听日志记录时,会出现问题。

网址调用 - > Facade(用弹簧集成,弹簧启动和支持侦探) - > Spring boot微服务(支持Sleuth)

微服务1:Spring集成Http调用

微服务2:弹簧启动静止控制器

以下是两个微服务的日志的详细信息。

微服务1调用微服务2

Microserice 1 log:

  

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启动应用程序并且没有使用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";
}

2 个答案:

答案 0 :(得分:0)

对不起,但是您格式化了代码并以这样的方式编写了文本,以至于我几乎无法理解问题所在。如果这两个应用程序都是Spring Boot并且一切正常?这并不奇怪,因为Sleuth是一个基于Boot的库。这意味着使用Boot和Sleuth注册所有必要的组件就足够了。如果是非Spring Boot应用程序,您基本上必须自己完成所有工作。这意味着通过HTTP或消息传递跟踪头。

答案 1 :(得分:0)

在Sleuth 2.1.0之前,spring-integration不会自动传播X-B3 *标头。

https://github.com/spring-cloud/spring-cloud-sleuth/issues/1333及其解决方法。