如何处理异常并做一些日志记录?
要处理 WebJob 中的异常,您可以在 WebJob 中添加 try-catch 并将所有 Job 代码放在 try 块中。
另一种方法是使用ErrorTrigger,我们需要安装
使用之前的 Azure WebJobs SDK 扩展。
如何在 web 作业重新开始之前删除队列中的现有消息,以便我们不进行并发操作?
您可以将 MaxDequeueCount 属性更改为 1。如果发生异常,消息将立即移至有害队列。
JobHostConfiguration config = new JobHostConfiguration();
config.Queues.MaxDequeueCount = 1;
JobHost host = new JobHost(config);
在网络作业关闭之前是否会触发任何事件,以便我可以做任何事情
我还没有找到任何会在网络作业关闭之前触发的事件。有 2 件事会导致 Web 作业关闭。
发生异常,我们可以使用 try-catch 块或 ErrorTrigger 记录异常。
由于 Web 应用计划重新启动,Web 作业中止。我们可以在函数中添加一个 CancellationToken 类型的参数,IsCancellationRequested 属性将在 WebJob 由于 Web App Plan 重新启动而中止之前设置为 true。
public static void ProcessQueueMessage2([QueueTrigger("myqueue")] string message, CancellationToken cancellationToken)
{
Task.Run(new Action(LongRunningTask), cancellationToken);
while (true)
{
Thread.Sleep(5000);
if (cancellationToken.IsCancellationRequested)
{
Console.WriteLine("The function has been Cancelled");
}
}
}
public static void LongRunningTask()
{
}
WebJob 中止之前的输出将是这样的。
[06/12/2017 01:55:38 > 9d3635: SYS INFO] Status changed to Stopping
[06/12/2017 01:55:42 > 9d3635: INFO] The function has been Cancelled
[06/12/2017 01:55:43 > 9d3635: SYS INFO] WebJob process was aborted
[06/12/2017 01:55:43 > 9d3635: SYS INFO] Status changed to Stopped