我正在使用这些代码段在eventhub上发布事件:
// ...
var eventHubClient = EventHubClient.CreateFromConnectionString(ConnectionString, EventHubName);
// ...
var serializerSettings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.None };
var data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(evt, serializerSettings));
var eventToBeSend = new EventData(data) {PartitionKey = "Bla"};
eventHubClient.Send(eventToBeSend);
这似乎非常慢(即eventHubClient.Send方法调用需要相当长的时间)。我有什么办法可以加快速度吗?
答案 0 :(得分:1)
您可以尝试将事件分组以发送和使用 SendBatchAsync()。只要您的批量大小不超过一个操作的256k限制,这可能会显着加快邮件传递速度。
此外,只需确保您还保留QueueClient - 它们是通过名为 MessagingFactory 的东西创建的,它提供内部连接管理,因此一旦创建,就保持QueueClient。
服务总线性能有一个很好的页面:
https://azure.microsoft.com/nb-no/documentation/articles/service-bus-performance-improvements/
答案 1 :(得分:0)
将大量数据发送到事件中心时,最常见的瓶颈之一是吞吐量单位不合适。
不太确定此请求需要多长时间以及您发送的每个包的大小,但您应该在任何假设之前查看此官方文档。
什么是事件中心吞吐量单位?
您可以通过Azure门户或事件中心资源管理器模板显式选择事件中心吞吐量单位。吞吐量单元适用于Event Hubs命名空间中的所有事件中心,每个吞吐量单元授予命名空间以下功能: