首页 > 解决方案 > 如何在多个微服务的生产者和消费者之间端到端跟踪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 中实现这种跟踪?

标签: spring-boottracespring-rabbit

解决方案


我用io.opentracing.contrib:opentracing-spring-rabbitmq-starter:3.0.0. 您可以在此处找到一些文档。通过这种机制,我完全实现了您的要求。

我发现了两件重要的事情要确保:

  1. 兔子模板必须在RabbitMqTracingAutoConfiguration调用之前初始化。一开始我遇到的问题是 bean 没有创建,因为 RabbitTemplate 是在RabbitMqTracingAutoConfiguration调用之后创建的。
  2. 并非所有 RestTemplate 方法都被 Aspect 包围。您可以在此处找到当前支持的方法的概述。我们目前有问题,RabbitTemplate.invoke不支持。

希望你觉得这很有帮助。


推荐阅读