Azure Function PULL 模式是否可以使用存储队列?
Is an Azure Function PULL pattern possible using Storage Queue?
我目前有一个事件网格触发的 Azure 函数,它会在 blob 上传到特定存储帐户时执行。这不会随着越来越大的 blob 的上传而扩展。如果 Function 确认消息但由于某些原因在下游失败,也有可能“丢失”消息。
消息队列允许缓冲,因此函数不会耗尽内存,并允许存储消息直到确认完成。
我正在寻找 PULL 模式的示例,其中函数按自己的方式处理队列消息。
思路:
- 当 blob 上传到存储帐户时,
- 事件网格将消息写入存储队列,
- 函数轮询存储队列以查找未处理的消息,
- 相应地处理消息
- 成功后,出队消息
- 如果失败,重试消息
像这样:
这是一种有效的方法吗,还是我只对函数使用 Queue Storage
触发器并从场景中删除事件网格?
事件网格具有 Event Handlers 的概念,其中 Azure Functions 是一个选项。
对于您的用例,您可以简单地将事件转发到 storage queue or service bus queue,以便由从队列中读取的函数应用程序进行处理。
两个队列提供程序都有自己的重试机制,Azure Functions 已经通过该机制运行。
我目前有一个事件网格触发的 Azure 函数,它会在 blob 上传到特定存储帐户时执行。这不会随着越来越大的 blob 的上传而扩展。如果 Function 确认消息但由于某些原因在下游失败,也有可能“丢失”消息。
消息队列允许缓冲,因此函数不会耗尽内存,并允许存储消息直到确认完成。
我正在寻找 PULL 模式的示例,其中函数按自己的方式处理队列消息。
思路:
- 当 blob 上传到存储帐户时,
- 事件网格将消息写入存储队列,
- 函数轮询存储队列以查找未处理的消息,
- 相应地处理消息
- 成功后,出队消息
- 如果失败,重试消息
像这样:
这是一种有效的方法吗,还是我只对函数使用 Queue Storage
触发器并从场景中删除事件网格?
事件网格具有 Event Handlers 的概念,其中 Azure Functions 是一个选项。
对于您的用例,您可以简单地将事件转发到 storage queue or service bus queue,以便由从队列中读取的函数应用程序进行处理。
两个队列提供程序都有自己的重试机制,Azure Functions 已经通过该机制运行。