在 Azure 事件中心存储应用程序事件

Storing application events in Azure Event hub

在我们的应用程序中,我们为任何副作用创建事件并愿意将它们同步到存储以供分析。

我正在考虑使用 Azure 事件中心,但当我查看 sample code 和 SDK 时,发现它仅支持批量发送。我可能会使用批量生产,但在很多情况下我需要一次发送一个事件。这让我想知道这是否是正确的服务。

对于那些对代码感兴趣的人可以在下面找到。

    public class CustomerCreatedEvent : EventRecord<Customer, Guid>
    {
        public CustomerCreatedEvent(Customer entity)
            : base(entity)
        {
        }

        public Customer Entity => _member;
    }

我在应用程序中为每个副作用设置了事件。从本质上讲,这些事件将同步到一个事件源,该事件源将为 BI 和分析提供 Azure 数据湖存储和 snyapse。

为此,Azure Event Hub 是正确的选择吗?除此之外,它使用可以捕获到 datalake 存储 gen2 的 avro 格式,但需要转换为 parquet,以便 snaype 可以查询。那部分,我将做一个 Azure 数据工厂服务。

能否详细说明一下?

谢谢。

您提供的示例代码使用的是最新的 Eventhub 包:Azure.Messaging.EventHubs。它不提供发送单个事件(除非将事件作为列表发送)以提高性能和吞吐量的方法。

详情可参考

顺便说一句,旧包(Microsoft.Azure.EventHubs)支持它,但我们不建议使用它。