Zipkin整合RabbitMQ实现异步数据收集
目录
- 1、Zipkin指定Rabbit地址启动
- 2、配置SpringCloud客户端
- 3、测试
在默认情况下,Zipkin客户端和Server之间是使用HTTP请求的方式进行通信,是一种同步请求的方式。Zipkin支持与RabbitMQ整合完成异 步消息传输。
1、Zipkin指定Rabbit地址启动
参数配置:
环境变量 | 说明 |
---|---|
RABBIT_ADDRESSES | 指定RabbitMQ地址 |
RABBIT_USER | RabbitMQ登录用户名(默认guest) |
RABBIT_PASSWORD | RabbitMQ登录密码(默认guest) |
Linux启动时加入--RABBIT_ADDRESSES、--RABBIT_USER、--RABBIT_PASSWORD
参数,指定RabbitMQ的地址,比如:
# 也可以配合其他环境变量使用,比如:mysql或者es持久化java -jar zipkin-server-2.21.7-exec.jar --RABBIT_ADDRESSES=127.0.0.1:5672 --RABBIT_USER=test --RABBIT_PASSWORD=test
Docker启动时加入-e RABBIT_ADDRESSES、-e RABBIT_USER、-e RABBIT_PASSWORD
参数,指定RabbitMQ的地址,比如:
# 也可以配合其他环境变量使用,比如:mysql或者es持久化docker run \--name zipkin-server2 -d \--restart=always \-p 9411:9411 \-e RABBIT_ADDRESSES=162.14.115.18:5672 \-e RABBIT_USER=admin \-e RABBIT_PASSWORD=admin \openzipkin/zipkin:2.21.7
当Zipkin成功启动以后,在rabbitmq会有一个叫做zipkin
的队列:
2、配置SpringCloud客户端
POM
<dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId></dependency>
yaml
spring: zipkin: base-url: http://162.18.113.15:9411 #zipkin server的请求地址 discoveryClientEnabled: false #让nacos把它当成一个URL,而不要当做服务名 sender: # 发送方式修改为rabbit,默认为web type: rabbit rabbitmq: host: 162.18.113.15 port: 5672 username: admin password: admin listener: # 这里配置了重试策略 direct: retry: enabled: true
3、测试
1、首先关闭Zipkin
服务,请求服务中的任意地址比如:/user/list
,可以发现RabbitMq
存在Ready
状态的消息:
2、再次启动zipkin
服务,可以看到RabbitMQ
中积压的消息已经被消费。
3、结论:当zipkin
宕机时,链路数据将存在RabbitMQ
中,当zipkin
重新启动后,可以继续记录链路信息,保证链路信息的不丢失,提高了可用性。