Spring Cloud消息总线RabbitMQ方式
因为之前说的 Zipkin 不再推荐我们来自定义 Server 端了,所以在最新版本的 Spring Cloud 依赖管理里已经找不到 zipkin-server 了。
那么如果直接使用官方提供的 jar 包怎么从 RabbitMQ 中获取 trace 信息呢?
我们可以通过环境变量让 Zipkin 从 RabbitMQ 中读取信息,就像这样:
RABBIT_ADDRESSES=localhost java -jar zipkin.jar
可配置的环境变量如下表所示:
属性 | 环境变量 | 描述 |
---|---|---|
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 |
如果设置了 URI,则以下属性将被忽略:
属性 | 环境变量 | 描述 |
---|---|---|
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 建立链接 |
关于 Zipkin 的 Client 端,也就是微服务应用,我们就在之前 trace-a、trace-b 的基础上修改,只要在他们的依赖里都引入spring-cloud-stream-binder-rabbit
即可,别的不用修改。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
不过为了说明是通过 RabbitMQ 传输的信息,我们将spring.zipkin.base-url
均改为http://localhost:9412/
,即指向一个错误的地址。
分别重启 trace-a、trace-b 工程,并启动 Zipkin Server
RABBIT_ADDRESSES=localhost java -jar zipkin.jar
然后访问http://localhost:8080/trace-a
并刷新 Zipkin UI,看到如下内容,就说明 Sleuth+Zipkin+RabbitMQ
整合成功。
此时看 RabbitMQ Admin,会看到多了一个名为 zipkin 的 Queue
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/11/spring-cloud-message-bus-rabbitmq/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论