问题描述
我目前有一个事件网格触发的 Azure 函数,它会在 blob 上传到特定存储帐户时执行。这不会随着越来越大的 blob 上传而扩展。如果函数确认消息但由于某种原因下游失败,也有可能“丢失”消息。
消息队列将允许进行缓冲,因此函数不会耗尽内存,并允许在确认完成之前存储消息。
我正在寻找一个 PULL 模式的示例,其中函数根据自己的条件处理队列消息。
思考:
这是一种有效的方法还是我只是为函数使用 Queue Storage
触发器并从场景中消除事件网格?
解决方法
事件网格具有 Event Handlers 的概念,其中 Azure Functions 是一种选择。
对于您的用例,您可以简单地将事件转发到 storage queue 或 service bus queue,以便由从队列中读取的函数应用进行处理。
两个队列提供程序都有自己的重试机制,Azure Functions 已经通过该机制运行。