标签:节点 com list 控制 主机名 命令 目录 amqp 效果
我们已经知道,zipkin的原理是服务之间的调用关系会通过HTTP方式上报到zipkin-server端,然后我们再通过zipkin-ui去调用查看追踪服务之间的调用链路。但是这种方式存在一个隐患,如果微服务之间与zipkin服务端网络不通,或调用链路上的网络闪断,http通信收集方式就无法工作。而且zipkin默认是将数据存储在内存中的,如果服务端重启或宕机,就会导致数据丢失。
所以我们不仅将数据存储在zipkin-serve中,同时还能通过某个消息存储的容器将本次调用其他服务的消息数据进行持久化存储,这样不就可以解决问题吗?结合RabbitMQ证好解决了这一问题,再发一份到消息队列中去。
docker search rabbitmq:management
docker pull rabbitmq:3.7.7-management // 1
docker pull rabbitmq:management // 2
docker run -d --name rabbitmq3.7.7 -p 5672:5672 -p 15672:15672
此方式默认用户名:guest
,密码:guest
,手动配置参考:
-d 后台运行容器;
--name 指定容器名;
-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);
-v 映射目录或文件;
--hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);
-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)
docker container ps
访问地址 http://192.168.2.28:15672/#/queues,这时候应该是啥也没有的
上一篇文章用的是docker快速启动,这篇文章用jar包启动模式,因为配置方便,不用写docker-compose.yml
环境配置文件
java -jar zipkin-server-2.17.0-exec.jar --zipkin.collector.rabbitmq.addresses=localhost
后面的--zipkin.collector.rabbitmq.addresses=localhost
就是RabbitMQ的配置,这是默认的
如果要自己指定的用户名和密码可以参考下面的启动命令:
java -jar zipkin-server-2.17.0-exec.jar --zipkin.collector.rabbitmq.addresses=localhost --zipkin.collector.rabbitmq.username=guest --zipkin.collector.rabbitmq.password=guest
属性 | 环境变量 | 描述 |
---|---|---|
zipkin.collector.rabbitmq.concurrency | RABBIT_CONCURRENCY | 并发消费者数量,默认为 1 |
zipkin.collector.rabbitmq.connection-timeout | RABBIT_CONNECTION_TIMEOUT | 建立连接时的超时时间,默认为 60000 毫秒,即 1 分钟 |
zipkin.collector.rabbitmq.queue | RABBIT_QUEUE | 从中获取 span 信息的队列,默认为 zipkin |
zipkin.collector.rabbitmq.uri | RABBIT_URI | 符合 RabbitMQ URI 规范 的 URI,例如 amqp://user:pass@host:10000/vhost |
如果设置了URL,则以下属性将被忽略
属性 | 环境变量 | 描述 |
---|---|---|
zipkin.collector.rabbitmq.addresses | RABBIT_ADDRESSES | 用逗号分隔的 RabbitMQ 地址列表,例如 localhost:5672,localhost:5673 |
zipkin.collector.rabbitmq.password | RABBIT_PASSWORD | 连接到 RabbitMQ 时使用的密码,默认为 guest |
zipkin.collector.rabbitmq.username | RABBIT_USER | 连接到 RabbitMQ 时使用的用户名,默认为 guest |
zipkin.collector.rabbitmq.virtual-host | RABBIT_VIRTUAL_HOST | 使用的 RabbitMQ virtual host,默认为 / |
zipkin.collector.rabbitmq.use-ssl | RABBIT_USE_SSL | 设置为 true 则用 SSL 的方式与 RabbitMQ 建立链接 |
启动时终端界面
此时再查看以下RabbitMQ,有一个地址已经连接上了
zipkin也已经启动
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
</dependency>
参考上一篇文章 springcloud --- spring cloud sleuth和zipkin日志管理(spring boot 2.18)
其他的不用改,也有人在微服务中添加了下面的配置,但效果是一样的,可以试一下
#如果是使用rabbitmq则需要下面的配置
spring.zipkin.sender.type= rabbit
#添加rabbitmq的配置
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.poassword=guest
spring.rabbitmq.listener.direct.retry.enabled=true
spring.rabbitmq.listener.simple.retry.enabled=true
启动微服务,发起一个请求,观察变化如下:
到此我们的服务已经调试成功!
参考文章:https://blog.csdn.net/zhangcongyi420/article/details/100809550
进阶中的菜鸟,欢迎留言探讨,指正不足!
springcloud -- sleuth+zipkin整合rabbitMQ详解
标签:节点 com list 控制 主机名 命令 目录 amqp 效果
原文地址:https://www.cnblogs.com/gyyyblog/p/11594412.html