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

MessageExtensions.ExtractActivity(Message, String) Method

Definition

Creates Activity based on the tracing context stored in the Message<param name="activityName">Optional Activity name</param><returns>New Activity with tracing context</returns>

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

Parameters

message
Message
activityName
String

Returns

Examples

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}")
   }
}

Note that every log is stamped with Current.Id, that could be used within any nested method call (sync or async) - Current is an ambient context that flows with async method calls.

Remarks

Tracing context is used to correlate telemetry between producer and consumer and represented by 'Diagnostic-Id' and 'Correlation-Context' properties in UserProperties.

.NET SDK automatically injects context when sending message to the ServiceBus (if diagnostics is enabled by tracing system).

'Diagnostic-Id' uniquely identifies operation that enqueued message

'Correlation-Context' is comma separated list of sting key value pairs represeting optional context for the operation.

If there is no tracing context in the message, this method returns Activity without parent.

Returned Activity needs to be started before it can be used (see example below)

Applies to