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

如何获取连续Azure WebJob调用的详细信息,azure,azure-webjobs,azure-webjobssdk,Azure,Azure Webjobs,Azure Webjobssdk,通过查看Kudu Azure WebJobs API文档,我发现可以通过编程方式进行几个调用来管理WebJobs 缺少的是一个调用,对于一个连续的webjob,它可以获取单个调用的细节。对于调用,我指的是对给定消息执行一次函数 我试图做的是,对于进入毒药队列的消息,获取父调用的异常消息。在poison消息中,我使用json prop$AzureWebJobsParentId获取父调用的id 我想用一个函数来管理毒药队列,该函数通过电子邮件发送错误的详细信息,并将消息移动到死信队列中 知道这是否可

通过查看Kudu Azure WebJobs API文档,我发现可以通过编程方式进行几个调用来管理WebJobs

缺少的是一个调用,对于一个连续的webjob,它可以获取单个调用的细节。对于调用,我指的是对给定消息执行一次函数

我试图做的是,对于进入毒药队列的消息,获取父调用的异常消息。在poison消息中,我使用json prop$AzureWebJobsParentId获取父调用的id

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


知道这是否可行吗?

给定WebJobs SDK调用ID,您可以通过WebJobs仪表板访问该执行的详细信息。您可以通过门户中的WebJobs刀片服务器访问仪表板(链接将位于“日志”列)

或者在浏览器中,您可以自己创建URL,例如(替换应用程序名称和调用ID):

https://.scm.azurewebsites.net/azurejobs/#/functions/invocations/
这就是您手动访问这些详细信息的方式。

包含
ExecutionContext
的绑定,该绑定允许您访问函数中特定于调用的系统信息。显示如何访问函数调用ID的示例:

https://<yourapp>.scm.azurewebsites.net/azurejobs/#/functions/invocations/<invocation-id>
public static void ProcessOrder(
    [QueueTrigger("orders")] Order order,
    TextWriter log,
    ExecutionContext context)
{
    log.WriteLine("InvocationId: {0}", context.InvocationId);
}
调用ID在仪表板日志中使用,因此通过编程方式访问该ID允许您将调用与这些日志关联起来

创建只处理一个函数的错误的。这是通过基于“ErrorHandler”后缀的命名约定实现的

为了


目前还没有一个官方的方法可以做到这一点,但是跟踪公开稳定的API(C#和REST)以读取单个函数实例有一个问题:请参阅状态

不是您上面链接到的API是通用的WebJobs API,它对SDK一无所知。但你的问题是具体的。你可能想调整标题以使其更清晰。好的@davidebo你的意思是我提到的Api是Kudu Api,而不是可以查看的地方?我想是的,因为有人打电话询问触发任务的细节。有没有关于去哪里找的建议?如果没有办法,那就奇怪了。在我看来,这是一个有用的方案。无论如何,谢谢你的评论。Kudu API只知道连续和触发的WebJobs。如果连续WebJob碰巧使用SDK,Kudu对此一无所知。因此,您的问题更多:在使用SDK时,是否有API来获取详细信息。@GiorgioBozio接受提及Azure WebJobs SDK扩展的答案如何?这仍然是一条路要走。是的,我想通过一些API调用来获得相同的信息,以便在邮件进入毒药队列时在自动电子邮件警报中使用。谢谢Mike。这将是一个很好的功能添加,也许这并不难做到。这将使毒药队列处理更容易。我正在寻找一个API调用来获取作业调用的详细信息。这个现在有空吗?我应该在哪里找到它?我更新了答案以收集可能对您的用例有用的谜题。
public static void ProcessOrderErrorHandler(
    [ErrorTrigger()] TraceFilter filter,
    TextWriter log)
{

    var lastMessage = filter.Message;
    var lastMessages = filter.GetDetailedMessage(5);
}
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);
}