事件中心发布速度非常慢
本文关键字:速度 非常 布速度 事件 | 更新日期: 2023-09-27 18:36:33
我正在使用以下代码片段在事件中心发布事件:
// ...
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方法调用需要相当长的时间)。我能做些什么来加快速度吗?
您可以尝试对事件进行分组以发送和使用 SendBatchAsync() 。只要批大小不超过一个操作的 256k 限制,就有可能显著加快消息传递速度。
此外,只需确保你也保留你的 QueueClient - 它们是通过名为 MessagingFactory 的东西创建的,它提供内部连接管理,所以一旦创建,保持你的 QueueClient 运行。
有一个关于服务总线性能的好页面:
https://azure.microsoft.com/nb-no/documentation/articles/service-bus-performance-improvements/
将大量数据发送到事件中心时,最常见的瓶颈之一是吞吐量单位集不正确。
不太确定此请求需要多少时间以及您发送的每个包裹的大小,但在进行任何假设之前,您应该检查此官方文档。
什么是事件中心吞吐量单位?
可以通过 Azure 门户或事件中心资源管理器模板显式选择事件中心吞吐量单位。吞吐量单位适用于事件中心命名空间中的所有事件中心,每个吞吐量单位使命名空间有权使用以下功能:
- 每秒
- 最多 1 MB 的入口事件(发送到事件中心的事件),但每秒不超过 1000 个入口事件、管理操作或控制 API 调用。 每秒
- 最多 2 MB 的出口事件(从事件中心使用的事件)。最多 84 GB 的事件存储(足以满足默认的 24 小时保留期)。
- 事件中心吞吐量单位根据给定小时内选择的最大单位数按小时计费。随着使用量的增加,您可以自动增加吞吐量单位的数量。