Azure功能和存储队列,如果功能失败该怎么办

Oak*_*ak3 10 azure azure-storage-queues azure-functions

我正在制定一个向Azure存储队列发布消息的方案.出于测试目的,我开发了一个控制台应用程序,我收到消息,我可以通过尝试计数更新它,当逻辑完成后,我删除了消息.

现在我正在尝试将我的代码移植到Azure功能.有一点似乎是非常不同的是,当调用Azure函数时,消息将从队列中删除.

我发现很难找到关于这个特定主题的任何文档,我觉得我错过了关于将这两者结合起来的概念.

我的问题:

  1. 我是对的,当你在一个新的队列项上触发一个函数时,该函数接收消息并将其从队列中删除,即使该函数失败了吗?
  2. 如果1是正确的,那么如何确保重试该消息并将其发布到死队列以供以后处理?

mat*_*ewc 26

运行时只在函数成功处理它时删除队列消息(即没有发生错误).当消息出列并传递给您的函数时,它将在一段时间(10分钟)内不可见.在您的函数运行时,将保持此不可见性.如果您的函数失败,则不会删除该消息- 它将以不可见状态保留在队列中.在visibilty超时到期后,该消息将再次在队列中可见以进行重新处理.

可以在此处找到核心WebJobs SDK队列处理的工作方式的详细信息.在该页面上,请参阅解决问题的"如何处理有害消息"部分.基本上你将获得免费的所有正确行为 - 重试处理,毒物消息处理等.:)