你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

MessageExtensions.ExtractActivity(Message, String) 方法

定义

Activity基于存储在可选活动名称中的Message跟踪上下文创建 使用跟踪上下文新建Activity

public static System.Diagnostics.Activity ExtractActivity (this Microsoft.Azure.ServiceBus.Message message, string activityName = default);
static member ExtractActivity : Microsoft.Azure.ServiceBus.Message * string -> System.Diagnostics.Activity
<Extension()>
Public Function ExtractActivity (message As Message, Optional activityName As String = Nothing) As Activity

参数

message
Message
activityName
String

返回

示例

async Task ProcessAsync()
{
   var message = await messageReceiver.ReceiveAsync();
   var activity = message.ExtractActivity();
   activity.Start();
   Logger.LogInformation($"Message received, Id = {Activity.Current.Id}")
   try 
   {
      // process message
   }
   catch (Exception ex)
   {
        Logger.LogError($"Exception {ex}, Id = {Activity.Current.Id}")
   }
   finally 
   {
        activity.Stop();
        // Activity is stopped, we no longer have it in Activity.Current, let's user activity now
        Logger.LogInformation($"Message processed, Id = {activity.Id}, Duration = {activity.Duration}")
   }
}

请注意,每个日志都使用 Current进行标记。可以在同步或异步 () 的任何嵌套方法调用中使用的 ID 是 Current 一个通过异步方法调用流动的环境上下文。

注解

跟踪上下文用于关联生成者和使用者之间的遥测数据,由 中的 UserProperties“诊断 Id”和“相关上下文”属性表示。

如果通过跟踪系统) 启用诊断,则向 ServiceBus (发送消息时,.NET SDK 会自动注入上下文。

“Diagnostic-Id”唯一标识排队消息的操作

“Correlation-Context”是以逗号分隔的 sting 键值对列表,为操作重新预配可选上下文。

如果消息中没有跟踪上下文,则此方法返回 Activity 没有父级。

Activity返回需要先启动,然后才能使用它 (请参阅以下示例)

适用于