Как отследить rabbitmq между изготовителем и потребителем для нескольких микросервисов? - PullRequest
1 голос
/ 11 марта 2020

Я использую rabbitmq в качестве одного из микросервисов, и для этого я хочу отследить отрезки rabbitmq, я использовал следующие зависимости для отслеживания отрезков rabbitmq через opentracing,

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?

1 Ответ

0 голосов
/ 16 марта 2020

Я использую io.opentracing.contrib:opentracing-spring-rabbitmq-starter:3.0.0. Вы можете найти документацию здесь . С помощью этого механизма я достиг именно того, о чем вы просили.

Я нашел две важные вещи, которые необходимо убедиться:

  1. Шаблон кролика должен быть инициализирован ДО того, как будет вызван RabbitMqTracingAutoConfiguration. Вначале у меня была проблема с тем, что bean-компонент не был создан, поскольку RabbitTemplate был создан ПОСЛЕ вызова RabbitMqTracingAutoConfiguration.
  2. Не все методы RestTemplate окружены Аспектом. Здесь вы можете найти обзор поддерживаемых методов. В настоящее время у нас есть проблема, что RabbitTemplate.invoke не поддерживается.

Надеюсь, вы найдете это полезным.

...