在《spring cloud 微服务实战》第402页-----将spring cloud sleuth的跟踪信息通过消息中间件收集发送到zipkin这一部分,在之前你已经按照第一种方式(http方式)将跟踪信息收集到了zipkin上,现在又跟着书上用消息中间件来收集。紧接着书上说只要对之前的trace-1和trace-2以及zipkin-server这三个项目做一些改造就可以实现,书上分两步来完成改造。你按照书上的进行改造发现有可能运行不成功。
首先第一步:修改客户端trace-1和trace-2,书上说除了引入spring-cloud-starter-sleuth依赖外,还要引入一下两个 但是你启动项目时会报如下错,根本启动不成功: 原因是你如果直接在前面创建的trace-1和trace-2上修改,仅仅添加上面那两个依赖是不够的,你还要将之前用http方式实现收集的依赖去掉,否则会冲突,项目起不来 把这个注掉以后项目能运行了(trace-1和trace-2都要注掉),一切都看似正常;但是当你不断的发送http:/localhost:9101/trace-1调试的时候,你明明看到rabbitmq消息队列里面已经有消息进入了,但是打开zipkin的ui界面却什么信息都没有。这不正常啊,后来到作者的git仓库看随书代码示例,才发现zipkin-server的改造除了要加书上提的依赖以外,还要将主类上的注解修改为如下: 刚开始用http方式收集用的是@EnableZipkinServer注解,后来用消息代理收集,就要改成@EnableZipkinStreamServer注解,为什么书上改造的时候不说要改这个,害得我纳闷半天,就是没有反应;书上内容真不严谨,太坑了。另外zipkin-server这边的application.properties中也要加入rabbitmq的配置信息(书上没说),修改完后,再发送请求,打开zipkin的UI界面,如愿看到了跟踪信息
最后一个问题是在将服务跟踪信息持久化到mysql时,我按照书上第416页采用在application.properties添加mysql的配置信息这种方式来初始化表信息的方式,启动项目的时候一直报com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database ‘zipkin’,后来才明白不管你是采用手动建表还是这种配置的方式自动初始化表,都要先手动创建数据库zipkin,要不然就会一直报那个错,我以为它会还会帮你初始化数据库,看来理解错了
原文链接:https://blog.csdn.net/lvyuan1234/article/details/77652938/