> 文档中心 > Zipkin整合RabbitMQ实现异步数据收集

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的队列:
Zipkin整合RabbitMQ实现异步数据收集

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状态的消息:
Zipkin整合RabbitMQ实现异步数据收集
2、再次启动zipkin服务,可以看到RabbitMQ中积压的消息已经被消费。
Zipkin整合RabbitMQ实现异步数据收集

3、结论:当zipkin宕机时,链路数据将存在RabbitMQ中,当zipkin重新启动后,可以继续记录链路信息,保证链路信息的不丢失,提高了可用性。