在 Azure 事件中心/blob 存储中查询事件

Posted

技术标签:

【中文标题】在 Azure 事件中心/blob 存储中查询事件【英文标题】:Querying events in Azure event hub/blob storage 【发布时间】:2019-03-23 06:29:12 【问题描述】:

我正在研究捕获和存储系统事件的技术(以期将来可能实施一些“事件溯源”系统)。

我对 Azure 事件中心很感兴趣,因为我喜欢在 Azure Functions & Logic Apps 中构建处理服务并让它们由引发的事件触发。

我创建了客户事件中心并启用了“捕获”,因此我的事件和有效负载存储在 Azure Blob 存储(.avro 文件)中

我想知道如何,或者甚至是否能够查询事件,所以说我有一个流捕获我所有的“客户”交互,例如 Register/Update_Contact_Address 等.....我想搜索特定客户 ID 的所有事件,这是如何实现的?我见过流分析工作,但这些似乎是用于“实时数据分析”,而不是我能够使用来自应用程序的参数进行查询,比如我的客户 Guid。

我希望创建一个小型管理应用程序,允许我选择一个客户,并收集为该 ID 捕获的所有客户事件?

以下是我存储的示例事件(从 .avro 文件中提取)


    "EventId": "51e3610f-8520-406d-8736-45f382bc5110",
    "EventName": "ReceiveCustomerReview",
    "ReceivedAt": "0001-01-01T00:00:00",
    "Client": 1,
    "customerGuid": "x45y57x2-5dcc-45c4-86c5-78942db363w1"
    "Payload": 
        "stars": 5,
        "comment": "OMG..... Beautiful product",
        "ClientId": 1
    

【问题讨论】:

【参考方案1】:

流分析具有一项新功能,您可以通过该功能按您选择的任何属性或字段将输出分区到 Blob 存储。那,用简单的 SQL 查询就很简单了。

【讨论】:

以上是关于在 Azure 事件中心/blob 存储中查询事件的主要内容,如果未能解决你的问题,请参考以下文章

“排队”的 Azure 事件网格 Blob 触发器事件消息存储在哪里,如何清除它们?

将文件上传到 Azure Blob 存储时没有触发事件网格事件——为啥?

Microsoft Azure 流分析和 Blob 存储输入

使用内置触发器或事件网格的 Azure 函数

将对象复制作为事件网格源的 Azure Blob

具有输入绑定的 Azure 函数的 Azure 事件中心存储容器配置