spring-boot - 如何在多个微服务的生产者和消费者之间端到端跟踪rabbitmq?
问题描述
我使用rabbitmq作为微服务之一,为此我想跟踪rabbitmq跨度,我使用以下依赖项通过opentracing跟踪rabbitmq跨度,
compile io.opentracing.contrib:opentracing-spring-jaeger-cloud-starter:1.0.1
compile group: 'io.opentracing.contrib', name: 'opentracing-spring-rabbitmq-parent', version: '2.0.5'
我只得到这个微服务的生产者端跨度。制片人
Tags routingkey
"" messageid
"null"
component
"rabbitmq"
exchange
"audit_exchange"
span.kind
"producer"
我想对通过多个微服务的请求进行端到端跟踪,其中一个是rabbitmq
喜欢microservice1==>rabbitMQ(Producer)==>Microservice2==>rabbitMQ(Consumer)==>Response Service
如何在 jaeger UI 中实现这种跟踪?
解决方案
我用io.opentracing.contrib:opentracing-spring-rabbitmq-starter:3.0.0
. 您可以在此处找到一些文档。通过这种机制,我完全实现了您的要求。
我发现了两件重要的事情要确保:
- 兔子模板必须在
RabbitMqTracingAutoConfiguration
调用之前初始化。一开始我遇到的问题是 bean 没有创建,因为 RabbitTemplate 是在RabbitMqTracingAutoConfiguration
调用之后创建的。 - 并非所有 RestTemplate 方法都被 Aspect 包围。您可以在此处找到当前支持的方法的概述。我们目前有问题,
RabbitTemplate.invoke
不支持。
希望你觉得这很有帮助。
推荐阅读
- python - Jupyter notebook 未通过 anaconda promot 或 cmd 加载
- java - 使用电子邮件中的链接下载资源时在浏览器中获取 ERR_INVALID_RESPONSE
- python - 用于多进程的 Python
- javascript - 如何根据视口的宽度编写这个 var 来设置 headerHeight?
- ios - 如何使用 nix 为 iPhone 进行交叉编译?
- javascript - 如何获取最后两个 URL 段?
- reactjs - 在控制台中正确返回数据之前,我需要单击两次
- javascript - 给定一个表示非负整数的非空数字数组,将整数加一(javascript)
- angular - 如何通过Angular中的url更改动态更改类
- go - 为什么 Golang 像这样在 atoi.go 中处理截止?