如果第一个 Web 作业要关闭,我如何触发第二个 Web 作业?
我建议您使用 try-catch 来处理您的第一个 WebJob 中的异常。如果发生任何异常,我们可以将 blob 名称写入队列以触发其他 WebJob。
public static void ProcessCSVFile([BlobTrigger("input/{blobname}.csv")] TextReader input, [Queue("myqueue")] out string outputBlobName, string blobname)
{
try
{
//process the csv file
//if none exception occurs, set the value of outputBlobName to null
outputBlobName = null;
}
catch
{
//add the blob name to a queue and another function named RepeatProcessCSVFile will be triggered.
outputBlobName = blobname;
}
}
我们可以在另一个 WebJob 中创建一个 QueueTrigger 函数。在这个函数中,我们可以读出 blob 名称并重新处理 csv。如果出现新的异常,我们还可以将 blob 名称重新添加到队列中,并且该函数将一次又一次地执行,直到 csv 文件被成功处理。
public static void RepeatProcessCSVFile([QueueTrigger("myqueue")] string blobName, [Queue("myqueue")] out string outputBlobName)
{
try
{
//process the csv file
//if none exception occurs, set the value of outputBlobName to null.
outputBlobName = null;
}
catch
{
//re-add the blobName to the queue and this function will be executed again until the csv file has been handled successfully.
outputBlobName = blobName;
}
}