我有一个要求是基于事件驱动架构进行文件合并。我有两个 blob 容器,一旦它们在各自的容器中可用,我就需要合并文件。关联将根据文件名发生。
这意味着假设我有两个容器,容器 A 和容器 B。当文件到达容器 A 时,它应该等待文件进入容器 B,然后应该触发事件,该事件将被 ADF 或逻辑应用订阅以进行进一步处理。请提出一些方法来实现这一点。
我有一个要求是基于事件驱动架构进行文件合并。我有两个 blob 容器,一旦它们在各自的容器中可用,我就需要合并文件。关联将根据文件名发生。
这意味着假设我有两个容器,容器 A 和容器 B。当文件到达容器 A 时,它应该等待文件进入容器 B,然后应该触发事件,该事件将被 ADF 或逻辑应用订阅以进行进一步处理。请提出一些方法来实现这一点。
每个容器都会引发事件网格Microsoft.Storage.BlobCreated
事件,并且不会等待另一个容器引发事件。
我能想到的一种选择是Durable Function
使用相关值作为持久函数实例 ID来识别现有函数或启动新函数来处理事件。如果具有给定 ID 的函数实例已经在运行,您将能够执行合并或引发新的自定义事件并单独处理它。
另一种选择是创建一个简单的分布式事件聚合器,如以下屏幕片段所示:
该概念基于Lease Blob,其中存储了EventAggregator的状态以及所有接收到的事件消息。HttpTrigger 函数负责处理和管理接收到的事件消息、创建和更新 State 以及处理重试传递以可靠地更新 State。在这种情况下,死信被用作看门狗定时器。
创建或更新租约 Blob 将为订阅者生成一个事件,其逻辑可以通过收到的事件消息数组查看 EventAggregator 的状态。
在我们没有为 Lease Blob(单独的存储帐户)使用事件的情况下,带有 EventAggregator 状态的 finally 事件消息可以通过 HttpTrigger 函数 - EventAggregator 发送到存储队列。