首页 > 解决方案 > 是否可以使用存储队列实现 Azure Function PULL 模式?

问题描述

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

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

我正在寻找一个 PULL 模式的示例,其中函数根据自己的条件处理队列消息。

思维:

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

像这样的东西: 在此处输入图像描述

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

标签: pythonazure-functionsazure-storage-queues

解决方案


事件网格具有事件处理程序的概念,其中 Azure Functions 是一种选择。

对于您的用例,您可以简单地将事件转发到存储队列服务总线队列,以便由从队列中读取的函数应用进行处理。

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


推荐阅读