使用 MassTransit.RabbitMQ v5.3.2 和 OpenTracing.Contrib.NetCore v0.5.0。
我可以使用 MassTransit 将事件发布和消费到 RabbitMQ,并且我已经让 OpenTracing 与 Jaeger 一起工作,但我还没有设法让我的 OpenTracing TraceIds 从我的消息发布者传播到我的消息消费者 - 发布者和消费者跟踪有不同TraceId。
我已经使用以下过滤器配置了 MassTransit:
cfg.UseDiagnosticsActivity(new DiagnosticListener("test"));
我实际上不确定侦听器名称应该是什么,因此是“测试”。该文档没有 OpenTracing 的示例。无论如何,这会在发布端的活动跟踪中添加一个“发布消息”跨度,并在消费者端自动设置一个“消费消息”跟踪;但是它们是单独的痕迹。我将如何将其整合到一个单一的跟踪中?
我可以使用以下方法设置 TraceId 标头:
cfg.ConfigureSend(configurator => configurator.UseExecute(context => context.Headers.Set("TraceId", GlobalTracer.Instance.ActiveSpan.Context.TraceId)))
但是我将如何配置我的消息使用者,使其成为根 TraceId?有兴趣看看我如何做到这一点,或者是否有不同的方法......
谢谢!