【发布时间】:2022-10-07 15:23:38
【问题描述】:
我们设置了一个带有 eventHubTrigger 的 Azure 函数来读取 Apache Nifi 创建的 blob。 EventGridSchema 针对 Blob Created 事件进行了过滤,基本上可以正常工作。问题是 Azure 函数偶尔会在 blob 完全提交之前获取它。
存储帐户是具有分层命名空间的 BlockBlobStorage 类型。 StorageBlobLogs 显示了典型的操作顺序:
Nifi 处理器:CreatePathFile > AppendFile > FlushFile。
紧随其后的 Azure 函数正在执行 Getblob > DeleteBlob。问题发生时,GetBlob 操作发生在FlushFile 甚至早于AppendFile
似乎只有 CreatePathFile 操作会触发 Blob Created 事件。 docs 表示 FlushWithClose 也会触发它,我们尝试在 data.api 上应用事件过滤器,除了完全停止函数运行之外没有实现任何其他功能。
我们如何为 Blob 完全提交后严格触发的 Blob Created Event 设置订阅?
-
我不知道 Nifi 是如何工作的,但 \"CreateFilePath\" 是否可能已经创建了一个(空)blob?
-
是的,它似乎首先创建了一个空文件。 Nifi processor docs 但是这意味着什么?
-
好吧,即使是空的 blob 也会正确地触发 Blob Created 事件。
-
是的,同意了。我期待每个创建的(空)blob 都有一个 Blob Create 事件,我将被过滤掉,每个完全提交的 blob 都会触发函数,但只观察前一个。
-
这是合乎逻辑的,不是吗? Blob 只创建一次。之后您只需更新它,因此没有其他“已创建”事件
标签: azure azure-blob-storage azure-eventgrid