EventDataDiagnosticExtensions.ExtractActivity(EventData, String) Método

Definição

Cria Activity com base no contexto de rastreamento armazenado no EventDataEvento recebido do Nomeda Atividade Opcional do EventHubNovo Activity com contexto de rastreamento

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

Parâmetros

eventData
EventData
activityName
String

Retornos

Exemplos

async Task ProcessAsync(EventData eventData)
{
   var activity = eventData.ExtractActivity();
   activity.Start();
   Logger.LogInformation($"Event received, Id = {Activity.Current.Id}")
   try 
   {
      // process event
   }
   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
        Logger.LogInformation($"Event 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 Properties.

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 enfileira o evento

'Correlation-Context' é uma lista separada por vírgulas de pares de valores de chave de cadeia de caracteres que representam o contexto opcional para a operação.

Se não houver nenhum contexto de rastreamento no evento, 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