【发布时间】:2021-11-07 00:32:36
【问题描述】:
我已经设置了以下测试:
- 创建了一个包含 10 个分区的天蓝色事件中心
- 创建了一个存储帐户
- 创建了单个消费者组
- 用 10k 条消息填充集线器
- 创建了 2 个容器(在 AKS 上),它们基本上会使用这些事件(使用相同的使用者组)并记录它们的 Azure 应用洞察。
期望:
运行
traces
| where message == "Event received"
| summarize count() by bin(timestamp,1s), cloud_RoleInstance
| render timechart
(这是每个 10k 事件的 3 次运行,以消除“pod 未预热变量”)
请注意,pod 活动之间没有(或很少)重叠,就好像其中一个持有锁或其他东西一样,并且神秘地,在某个时候,锁被释放并被另一个 pod 使用。
相关消费者代码:
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
_processor = new EventProcessorClient(_storageClient, _consumerGroup, _hubConnection, _eventHubName);
_processor.ProcessEventAsync += ProcessEventHandler;
_processor.ProcessErrorAsync += ProcessErrorHandler;
// Start the processing
await _processor.StartProcessingAsync(stoppingToken);
}
internal async Task ProcessEventHandler(ProcessEventArgs eventArgs)
{
_logger.LogTelemetry("Event received");
await eventArgs.UpdateCheckpointAsync(eventArgs.CancellationToken);
}
【问题讨论】:
标签: c# azure azure-eventhub event-driven-design