.net core 使用MassTransit.RabbitMQ将OpenTracing TraceID从发布者传播到使用者

.net core 使用MassTransit.RabbitMQ将OpenTracing TraceID从发布者传播到使用者,.net-core,rabbitmq,masstransit,opentracing,.net Core,Rabbitmq,Masstransit,Opentracing,使用MassTransit.RabbitMQ v5.3.2和OpenTracing.Contrib.NetCore v0.5.0 我能够使用MassTransit将事件发布和消费到RabbitMQ,并且我已经让OpenTracing与Jaeger一起工作,但是我还没有设法将OpenTracing TraceID从我的消息发布者传播到消息消费者-发布者和消费者跟踪具有不同的TraceID 我已使用以下过滤器配置MassTransit: cfg.UseDiagnosticsActivity(new

使用MassTransit.RabbitMQ v5.3.2和OpenTracing.Contrib.NetCore v0.5.0

我能够使用MassTransit将事件发布和消费到RabbitMQ,并且我已经让OpenTracing与Jaeger一起工作,但是我还没有设法将OpenTracing TraceID从我的消息发布者传播到消息消费者-发布者和消费者跟踪具有不同的TraceID

我已使用以下过滤器配置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?有兴趣看看我可以怎么做,或者如果有不同的方法


谢谢

如果有人感兴趣;我最终解决了这个问题,创建了一些发布和消费MassTransit中间件,分别通过跟踪注入和提取进行跟踪传播

我已经在GitHub上发布了解决方案-

仍然有兴趣听到是否有更好的方法来做这件事