распространять OpenTracing TraceIds от издателя к потребителю, используя MassTransit.RabbitMQ - PullRequest
0 голосов
/ 09 мая 2019

Использование MassTransit.RabbitMQ v5.3.2 и OpenTracing.Contrib.NetCore v0.5.0.

Я могу публиковать и использовать события в RabbitMQ с помощью MassTransit, и у меня OpenTracing работает с Jaeger, но ямне не удалось получить мои OpenTracing TraceIds, распространенные от моего издателя сообщений до моего потребителя сообщений - у трассировок издателя и потребителя есть разные TraceIds.

Я настроил MassTransit со следующим фильтром:

cfg.UseDiagnosticsActivity(new DiagnosticListener("test"));

На самом деле я не уверен, каким должно быть имя слушателя, следовательно, "test".Документация не имеет примера для OpenTracing.В любом случае, это добавляет диапазон «Сообщение публикации» к активной трассировке на стороне публикации и автоматически устанавливает трассировку «Сообщение потребления» на стороне потребителя;Однако это отдельные следы.Как бы я мог объединить это в одну трассировку?

Я мог бы установить заголовок TraceId, используя:

cfg.ConfigureSend(configurator => configurator.UseExecute(context => context.Headers.Set("TraceId", GlobalTracer.Instance.ActiveSpan.Context.TraceId)))

, но тогда как мне настроить моего получателя сообщений так, чтобы это был кореньTraceId?Интересно посмотреть, как я могу это сделать, или если есть другой подход ...

Спасибо!

1 Ответ

0 голосов
/ 15 мая 2019

Если кому-то интересно;В итоге я решил эту проблему, создав некоторое промежуточное программное обеспечение MassTransit для публикации и потребления, чтобы выполнить распространение трассировки путем внедрения и извлечения трассировки соответственно.

Я разместил решение на GitHub - https://github.com/yesmarket/MassTransit.OpenTracing

Еще интересно узнать, есть ли лучший способ сделать это ...

...