我正在使用带有队列触发器的 Azure Functions。
当该函数运行时,它会从 Azure 队列中取出一个项目。但是,有时我的处理会失败,在这种情况下,我想重新排队该项目并稍后对其进行处理。
如何在 Azure Functions 中并使用 Node.js 实现这一目标?
最佳答案
我所做的解决方法是创建一个绑定(bind)到触发该函数的同一队列。
[FunctionName("FunctionsQueueTrigger")]
public static async Task Run(
[QueueTrigger("101functionsqueue")] string myQueueItem,
[Queue("101functionsqueue")] IAsyncCollector<string> myQueue)
就我而言,如果抛出存储异常且代码为 412(前提条件失败),我想将项目放回队列。
catch (StorageException ex)
{
if (ex.RequestInformation.HttpStatusCode == (int)System.Net.HttpStatusCode.PreconditionFailed) //412
{
log.LogWarning($"Putting item back to queue due to {ex.Message} error.");
await myQueue.AddAsync(myQueueItem);
}
}
最后,该函数从队列中删除当前项目,但会添加一个具有相同内容的新项目。
这可能不是最好的解决方案,但对我来说效果很好。
关于azure-functions - Azure 函数队列触发器 - 如果失败,如何将项目放回到队列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51908152/