【问题标题】:Single event for multiple azure blob containers多个 azure blob 容器的单个事件
【发布时间】:2018-08-01 22:55:11
【问题描述】:

我有一个要求是基于事件驱动架构进行文件合并。我有两个 blob 容器,一旦它们在各自的容器中可用,我就需要合并文件。关联将根据文件名发生。

这意味着假设我有两个容器,容器 A 和容器 B。当文件到达容器 A 时,它应该等待文件进入容器 B,然后应该触发事件,该事件将被 ADF 或逻辑应用程序订阅进一步处理。请提出一些方法来实现这一点。

【问题讨论】:

    标签: azure azure-logic-apps azure-eventgrid


    【解决方案1】:

    Event Grid Microsoft.Storage.BlobCreated 事件将针对每个容器引发,并且不会等待另一个容器引发事件。

    我能想到的一个选项是使用Durable Function 处理您的事件,您可以使用相关值作为Durable Function instance ID 来识别现有函数或启动新函数。如果具有给定 ID 的函数实例已经在运行,您可以执行合并或引发新的 custom event 并单独处理。

    【讨论】:

    • 或者,如果您想沿着上述逻辑应用路线走下去,您可以使用提到的 eventgrid 事件作为您的逻辑应用中的触发器,您可以在逻辑应用中有多个触发器,我们将彼此等待,所以如果 blob a 被触发,它将等待 blob b 被触发,然后再继续运行
    【解决方案2】:

    另一种选择是创建一个简单的分布式事件聚合器,如下面的屏幕 sn-p 所示:

    该概念基于 Lease Blob,其中存储了 EventAggregator 的状态以及所有收到的事件消息。 HttpTrigger 函数负责处理和管理接收到的事件消息、创建和更新 State 以及处理重试传递以可靠地更新 State。在这种情况下,死信被用作看门狗定时器。

    创建或更新租约 Blob 将为订阅者生成一个事件,其逻辑可以通过接收到的事件消息数组查看 EventAggregator 的状态。

    在我们没有为 Lease Blob(单独的存储帐户)使用事件的情况下,带有 EventAggregator 状态的 finally 事件消息可以通过 HttpTrigger 函数 - EventAggregator 发送到存储队列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-08
      • 2020-03-14
      • 2018-03-01
      • 2019-03-25
      • 2018-08-20
      • 2016-11-29
      • 2019-05-18
      相关资源
      最近更新 更多