You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何关联两个通过NServiceBus通信的AppInsights服务资源?

NServiceBus 通信服务 Application Map 关联解决方案

1. 发送端遥测配置

  • 发送NSB消息时,不要使用通用TrackXXX方法,需明确构造DependencyTelemetry对象,固定类型为Queue Message
  • DependencyTelemetry.Target字段必须填写接收方服务在Application Map中展示的 exact 服务名称,不要填RabbitMQ地址或队列名
  • 发送端通过Activity.DefaultId获取当前W3C格式Trace上下文,连同Activity.Current?.TraceStateString一起作为自定义头附加到NSB消息中,不要使用自定义的父ID字段
  • 确保依赖遥测的Success属性设为true,OperationId与当前服务链路的操作ID保持一致

2. 接收端遥测配置

  • 处理NSB消息前,先从消息头提取发送端传入的Trace上下文
  • 手动初始化新的Activity,强制指定Activity.IdFormat = ActivityIdFormat.W3C,调用Activity.SetParentId(提取的父ActivityId),存在TraceState时同步赋值
  • 启动Activity后构造RequestTelemetry跟踪消息处理,固定类型为Queue Message,RequestTelemetry.Source字段填写发送方服务在Application Map中展示的 exact 服务名称
  • 确保接收端请求遥测的OperationId与发送端依赖遥测的OperationId完全一致,接收端请求的ParentId与发送端依赖的Id完全一致

3. 全局遥测初始化器补充(可选但推荐)

  • 实现自定义ITelemetryInitializer,全局处理所有NSB相关遥测的字段补全,避免业务代码重复配置:
    public class NsbTelemetryInitializer : ITelemetryInitializer
    {
        public void Initialize(ITelemetry telemetry)
        {
            // 处理NSB发送的依赖遥测
            if (telemetry is DependencyTelemetry dt && dt.Type == "Queue Message" && dt.Properties.ContainsKey("IsNsbMessage"))
            {
                dt.Target = dt.Properties["TargetServiceName"];
            }
            // 处理NSB接收的请求遥测
            if (telemetry is RequestTelemetry rt && rt.Type == "Queue Message" && rt.Properties.ContainsKey("IsNsbMessage"))
            {
                rt.Source = rt.Properties["SourceServiceName"];
            }
        }
    }
    
  • 在Startup中注册初始化器:services.AddSingleton<ITelemetryInitializer, NsbTelemetryInitializer>();

4. 验证逻辑

  • 到Application Insights事务搜索中,按任意NSB消息的Trace ID检索,确认能同时查到发送端的依赖遥测和接收端的请求遥测
  • 核对两个遥测的operation_id完全相同、发送端依赖的id等于接收端请求的parent_id、依赖的target等于接收服务名、请求的source等于发送服务名,四个条件满足时Application Map会自动绘制两个服务之间的连线

内容的提问来源于stack exchange,提问作者Kevin Everett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:24:03