我正在制定一个向Azure存储队列发布消息的方案。出于测试目的,我开发了一个控制台应用程序,在那里我收到消息,我可以通过尝试计数更新它,当逻辑完成后,我删除了消息。
现在我正在尝试将代码移植到Azure功能。有一点似乎是非常不同的是,当调用Azure函数时,消息将从队列中删除。
我发现很难找到关于这个特定主题的任何文档,我觉得我对于将这两者结合起来的概念缺少了一些东西。
我的问题:
答案 0 :(得分:24)
运行时仅在您的Function 成功处理它时删除队列消息(即没有发生错误)。当邮件出列并传递给您的函数时,它会在一段时间(10分钟)内变为不可见。在您的函数运行时,将保持此不可见性。如果您的函数失败,则消息未删除 - 它将以不可见状态保留在队列中。在visibilty超时到期后,该消息将再次在队列中可见以进行重新处理。
可以找到核心WebJobs SDK队列处理工作原理的详细信息here。在该页面上,请参阅"如何处理有害消息" 部分,以解决您的问题。基本上,您将获得免费的所有正确行为 - 重试处理,毒物消息处理等。:)