Azure Function PULL 模式是否可以使用存储队列?

Is an Azure Function PULL pattern possible using Storage Queue?

我目前有一个事件网格触发的 Azure 函数,它会在 blob 上传到特定存储帐户时执行。这不会随着越来越大的 blob 的上传而扩展。如果 Function 确认消息但由于某些原因在下游失败,也有可能“丢失”消息。

消息队列允许缓冲,因此函数不会耗尽内存,并允许存储消息直到确认完成。

我正在寻找 PULL 模式的示例,其中函数按自己的方式处理队列消息。

思路:

  1. 当 blob 上传到存储帐户时,
  2. 事件网格将消息写入存储队列,
  3. 函数轮询存储队列以查找未处理的消息,
  4. 相应地处理消息
  5. 成功后,出队消息
  6. 如果失败,重试消息

像这样:

这是一种有效的方法吗,还是我只对函数使用 Queue Storage 触发器并从场景中删除事件网格?

事件网格具有 Event Handlers 的概念,其中 Azure Functions 是一个选项。

对于您的用例,您可以简单地将事件转发到 storage queue or service bus queue,以便由从队列中读取的函数应用程序进行处理。

两个队列提供程序都有自己的重试机制,Azure Functions 已经通过该机制运行。