一、springcloud sleuth要解决的问题
1、服务追踪,一条链路上的所有处理给统一的TraceID,通过这个唯一的标识就可以找到完整的链路
2、每一个微服务的节点处理再给独立的spanID,这样请求合适到达,合适离开节点都有追踪的依据,可以算出时间差
二、项目整合sleuth
1、在需要使用链路追踪的项目里添加依赖

2、log4j.xml引入链路追踪数据

这里是4个参数,sleuth在源码里已经定义了这4个参数,可以直接使用。

3、异步线程池

在这里我们继承了AsyncConfigurerSupport指定了具体的异步执行器,使用LazyTraceExecutor 确保traceId和spanId正确的传递,同时给类加上@EnableAsync 注解。
这里异步方法必须实现sleuth的线程池,要不前traceId和spanId不能传递。
三、测试追踪
1、按顺序启动eureka->feginclient->feginserver
2、访问接口http://localhost:7070/feignclient/feignTest1
这里会经历 单线程->异步县城->fegin


四、问题
1、无法实现mq队列消息的追踪
补充:后续已经实现消息队列的链路追踪。
网友评论