次の方法で共有


MessageExtensions.ExtractActivity(Message, String) メソッド

定義

トレース コンテキストを使用して、オプションのアクティビティ名New ActivityMessage格納されているトレース コンテキストに基づいて作成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注意してください。入れ子になったメソッド呼び出し (同期または非同期) Current 内で使用できる ID は、非同期メソッド呼び出しでフローするアンビエント コンテキストです。

注釈

トレース コンテキストは、プロデューサーとコンシューマーの間のテレメトリを関連付けるために使用され、 の 'Diagnostic-Id' プロパティと 'Correlation-Context' プロパティによって UserProperties表されます。

.NET SDK は、ServiceBus にメッセージを送信するときにコンテキストを自動的に挿入します (診断がトレース システムによって有効になっている場合)。

'Diagnostic-Id' は、メッセージをエンキューした操作を一意に識別します

'Correlation-Context' は、操作の省略可能なコンテキストを再設定するスティング キー値ペアのコンマ区切りのリストです。

メッセージにトレース コンテキストがない場合、このメソッドは親なしで を返します Activity

返される Activity は、使用する前に開始する必要があります (以下の例を参照)。

適用対象