你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
MessageExtensions.ExtractActivity(Message, String) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
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进行标记。可以在同步或异步 () 的任何嵌套方法调用中使用的 ID 是 Current 一个通过异步方法调用流动的环境上下文。
注解
跟踪上下文用于关联生成者和使用者之间的遥测数据,由 中的 UserProperties“诊断 Id”和“相关上下文”属性表示。
如果通过跟踪系统) 启用诊断,则向 ServiceBus (发送消息时,.NET SDK 会自动注入上下文。
“Diagnostic-Id”唯一标识排队消息的操作
“Correlation-Context”是以逗号分隔的 sting 键值对列表,为操作重新预配可选上下文。
如果消息中没有跟踪上下文,则此方法返回 Activity 没有父级。
Activity返回需要先启动,然后才能使用它 (请参阅以下示例)