Spring Cloud Sleuth与Zipkin整合时遇到的问题记录
将spring cloud sleuth的跟踪信息通过消息中间件收集发送到zipkin这一部分,在之前你已经按照第一种方式(http方式)将跟踪信息收集到了zipkin上,现在又跟着书上用消息中间件来收集。紧接着书上说只要对之前的trace-1和trace-2以及zipkin-server这三个项目做一些改造就可以实现,书上分两步来完成改造。你按照书上的进行改造发现有可能运行不成功。
首先第一步:修改客户端trace-1和trace-2,书上说除了引入spring-cloud-starter-sleuth依赖外,还要引入一下两个
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-stream</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>
但是你启动项目时会报如下错,根本启动不成功:
Parameter 0 of method sleuthStreamSpanReporter in org.springframework.cloud.sleuth.stream.SleuthStreamAutoConfiguration required a bean of type 'org.springframework.cloud.sleuth.stream.HostLocator' that could not be found.
- Bean method 'zipkinEndpointLocator' not loaded because @ConditionalOnProperty (spring.zipkin.locator.discovery.enabled=true) did not find property 'spring.zipkin.locator.discovery.enabled'
Action:
Consider revisiting the conditions above or defining a bean of type 'org.springframework.cloud.sleuth.stream.HostLocator' in your configuration.
原因是你如果直接在前面创建的trace-1和trace-2上修改,仅仅添加上面那两个依赖是不够的,你还要将之前用http方式实现收集的依赖去掉,否则会冲突,项目起不来
依赖如下
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>-