Compartilhar via


MessageExtensions.ExtractActivity(Message, String) Método

Definição

Cria Activity com base no contexto de rastreamento armazenado no nomeda Messageatividade opcional Novo Activity com contexto de rastreamento

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

Parâmetros

message
Message
activityName
String

Retornos

Exemplos

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

Observe que cada log é carimbado com Current. Id, que pode ser usada em qualquer chamada de método aninhado (sincronização ou assíncrona) – Current é um contexto ambiente que flui com chamadas de método assíncrono.

Comentários

O contexto de rastreamento é usado para correlacionar a telemetria entre o produtor e o consumidor e representado pelas propriedades 'Diagnostic-Id' e 'Correlation-Context' no UserProperties.

O SDK do .NET injeta automaticamente o contexto ao enviar mensagem para o ServiceBus (se diagnóstico estiver habilitado pelo sistema de rastreamento).

'Diagnostic-Id' identifica exclusivamente a operação que enfileirava mensagem

'Correlation-Context' é uma lista separada por vírgulas de pares sting key value represeting contexto opcional para a operação.

Se não houver nenhum contexto de rastreamento na mensagem, esse método retornará Activity sem pai.

O retorno Activity precisa ser iniciado antes que possa ser usado (veja o exemplo abaixo)

Aplica-se a