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