如何获取连续Azure WebJob调用的详细信息

Gio*_*zio 4 azure azure-webjobs azure-webjobssdk

查看Kudu Azure WebJobs API文档https://github.com/projectkudu/kudu/wiki/WebJobs-API我看到我可以通过编程方式管理WebJobs.

缺少的是调用获取连续webjob的单个调用的详细信息.对于调用,我的意思是单个执行给定消息的函数.

我想要做的是,对于进入毒性队列的消息,获取父调用的异常消息.在有毒消息中,我使用json prop $ AzureWebJobsParentId获取父调用的id.

我想用一个函数来管理毒性队列,该函数通过电子邮件发送错误的详细信息并将消息移动到死信队列中.

知道这是否可行?

Sas*_*ied 5

Azure的WebJobs SDK核心扩展包含有约束力的ExecutionContext,它允许你访问你的函数调用特定的系统信息.显示如何访问函数调用ID的示例:

public static void ProcessOrder(
    [QueueTrigger("orders")] Order order,
    TextWriter log,
    ExecutionContext context)
{
    log.WriteLine("InvocationId: {0}", context.InvocationId);
}
Run Code Online (Sandbox Code Playgroud)

调用ID在仪表板日志中使用,因此以编程方式访问此调用可以将调用与这些日志相关联.

创建一个特定函数的错误处理程序,它只处理一个函数的错误.这是通过基于"ErrorHandler"后缀命名约定来完成的.

public static void ProcessOrderErrorHandler(
    [ErrorTrigger()] TraceFilter filter,
    TextWriter log)
{

    var lastMessage = filter.Message;
    var lastMessages = filter.GetDetailedMessage(5);
}
Run Code Online (Sandbox Code Playgroud)

用于电子邮件通知

public static void ErrorMonitor(
    [ErrorTrigger("0:30:00", 10, Throttle = "1:00:00")] TraceFilter filter,
    [SendGrid] SendGridMessage message)
{
    message.Subject = "WebJobs Error Alert";
    message.Text = filter.GetDetailedMessage(5);
}
Run Code Online (Sandbox Code Playgroud)