在默认情况下,Zipkin客户端和Server之间是使用HTTP请求的方式进行通信(即同步的请求方式),在
网络波动,Server端异常等情况下可能存在信息收集不及时的问题。Zipkin支持与rabbitMQ整合完成异
步消息传输。
RabbitMQ的安装与启动
(1):下载erlang,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erlang.org/downloads,双击.exe文件进行安装就好,安装完成之后创建一个名为ERLANG_HOME的环境变量,其值指向erlang的安装目录,同时将bin目录路径加入到PATH变量中,最后打开命令行,输入erl,如果出现erlang的版本信息就表示erlang语言环境安装成功;
(2):下载RabbitMQ,下载地址:http://www.rabbitmq.com/
(3):安装RabbitMQ-Plugins,这个相当于是一个管理界面,方便我们在浏览器界面查看RabbitMQ各个消息队列以及exchange的工作情况,安装方法是:打开命令行cd进入rabbitmq的sbin目录,输入:rabbitmq-plugins enable rabbitmq_management命令,稍等会会发现出现plugins安装成功的提示,默认是安装6个插件,我安装RabbitMQ插件时只成功了3个,一开始无法访问页面。
解决方法是:首先在命令行输入:rabbitmq-service stop,接着输入rabbitmq-service remove,再接着输入rabbitmq-service install,接着输入rabbitmq-service start,最后重新输入rabbitmq-plugins enable rabbitmq_management
这样就成功访问了,访问地址:127.0.0.1:15672
客户端配置
(1) 配置依赖
<!--sleuth链路追踪-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<!--使用rabbitmq消息中间件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
</dependency>
导入spring-rabbit 依赖,是Spring提供的对rabbit的封装,客户端会根据配置自动的生产消息并发送
到目标队列中
(2) 配置消息中间件rabbit mq地址等信息
zipkin:
#base-url: http://127.0.0.1:9411/ #zipkin server的请求地址
sender:
#type: rabbit
type: web #请求方式,默认以http的方式向zipkin server发送追踪数据
sleuth:
sampler:
probability: 1.0 #采样的百分比
rabbitmq:
host: localhost
port: 5672 #
username: guest
password: guest
listener: # 这里配置了重试策略
direct:
retry:
enabled: true
simple:
retry:
enabled: true
15672 为网页管理端口 这里是5672端口
(3) 测试
关闭Zipkin Server,并随意请求连接。打开rabbitmq管理后台可以看到,消息已经推送到rabbitmq。
当Zipkin Server启动时,会自动的从rabbitmq获取消息并消费,展示追踪数据
可以看到如下效果:
请求的耗时时间不会出现突然耗时特长的情况
当ZipkinServer不可用时(比如关闭、网络不通等),追踪信息不会丢失,因为这些信息会保存在
Rabbitmq服务器上,直到Zipkin服务器可用时,再从Rabbitmq中取出这段时间的信息.
zipkin server启动命令:
java -jar zipkin-server-2.19.2-exec.jar --RABBIT_ADDRESSES=127.0.0.1:5672