azure-functions - Azure 函数队列触发器 - 如果失败,如何将项目放回到队列中?

标签 azure-functions

我正在使用带有队列触发器的 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/

相关文章:

azure - 测试 Azure Functions 时如何调用ConfigureAppConfiguration

azure - 发布 Azure 函数

azure - 部署 Azure 函数应用程序应用程序设置的最佳方法

Azure 函数从 Azure 应用程序配置配置计时器触发器

azure - 如何获取队列触发的azure函数的运行时状态?

Azure Functions 服务无法识别从外部客户端发送的请求

Azure Function App 通过应用程序设置使用最新版本的 Key Vault Secret

azure - 将应用程序设置部署到 azure 函数应用程序

c# - Azure Durable Function - 编排中的计数器

c# - 如何使用 C# 更新 cosmos db 文档