增加事件中心的吞吐量

时间:2019-08-27 18:00:58

标签: c# azure asynchronous azure-eventhub

我正在尝试将大量数据发送到事件中心。我正在使用EventDataBatch创建一批EventData。并将其发送到事件中心。我最初使用一个EventhubClient发送批次。后来我创建了var eventHubClientPool = new EventHubClient[MaxConnections];
现在,我以eventHubClientPool[connectionId].SendAsync(ehBatch.ToEnumerable()));的形式发送每批 connectionId = random.Next(MaxConnections);

如何进一步提高吞吐量?

2 个答案:

答案 0 :(得分:0)

根据“最佳做法” Docs

“单个批处理不得超过事件的1 MB限制。此外,该批处理中的每条消息都使用相同的发布者身份。发件人有责任确保该批处理不超过最大事件大小。如果是,则会生成客户端“发送错误”。

如果您仍然想提高吞吐量,

  • 考虑缩小/压缩有效负载。

  • 将您的有效载荷存储在 外部存储(例如Cosmosdb),并发送对您的有效负载的引用 在事件中。

答案 1 :(得分:0)

您必须增加throughput units (TU),一个TU允许:

  • 进入(将事件发送到事件中心)高达1000个事件/秒或1MB /秒,以先到者为准
  • 出口(消费来自事件中心的事件)高达4096个事件/秒或2MB /秒

如何更改吞吐量单位:

  • 正如Sajeetharan所述,您可以通过设置自动充气来做到这一点。请注意,仅当您具有标准层时,此功能才可用。
    • 转到“ Azure门户事件中心”命名空间的“概述”选项卡,然后查找自动充气的吞吐量单位
  • 您还可以在名称空间创建期间设置TU,基本和标准层最多可以设置20个。
  • 如果已经创建了名称空间,则可以通过转到Azure Portal事件中心名称空间->设置->缩放
  • 来更改TU。

TUs apply to all event hubs在 事件中心名称空间。您在名称空间级别购买TU,并且它们在名称空间中的所有事件中心之间共享。

还有Event Hubs Dedicated cluster,它是为要求最苛刻的客户设计的。该产品可构建基于容量的群集,该群集不受TU的束缚,但不受群集的CPU和内存使用率的限制。