Azure Event Hubs SDK for .NET - 用于.NET的高吞吐量事件流式传输SDK用于通过Azure Event Hubs发送和接收事件。 下载地址https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-eventhub-dotnet技能概述azure-eventhub-dotnet 技能是一个专门用于.NET开发的Azure Event Hubs SDK技能包。它提供了高吞吐量的事件流式传输功能支持事件的发送和接收操作。该技能包适用于需要构建实时数据管道、事件驱动架构或大数据流处理应用的.NET开发者。主要功能事件发送支持批量发送和缓冲发送两种模式可高效处理大量事件数据事件接收提供EventProcessorClient用于生产环境的事件处理支持检查点和负载均衡分区管理支持分区操作可通过分区键保证事件顺序性身份认证集成Azure Identity支持DefaultAzureCredential进行安全认证检查点策略提供多种检查点策略平衡吞吐量和可靠性ASP.NET Core集成支持依赖注入可轻松集成到ASP.NET Core应用中触发条件在以下情况下应该调用此技能用户需要在.NET应用中集成Azure Event Hubs需要实现高吞吐量的事件发送功能需要构建可靠的事件消费者应用需要处理实时数据流或事件驱动架构需要了解Event Hubs的分区和检查点机制使用场景场景1实时数据管道构建高吞吐量的数据管道将事件从生产者发送到Event Hubs再由消费者处理并存储到数据库或数据湖。场景2事件驱动架构在微服务架构中使用Event Hubs作为事件总线实现服务间的解耦和异步通信。场景3日志和遥测收集收集应用程序日志、指标和遥测数据进行实时分析和监控。处理过程1. 安装依赖通过NuGet安装必要的包# 核心包发送和简单接收dotnet add package Azure.Messaging.EventHubs# 处理器包生产环境接收带检查点dotnet add package Azure.Messaging.EventHubs.Processor# 身份认证dotnet add package Azure.Identity# 检查点存储EventProcessorClient需要dotnet add package Azure.Storage.Blobs2. 创建生产者客户端使用DefaultAzureCredential创建EventHubProducerClientusing Azure.Identity;using Azure.Messaging.EventHubs;using Azure.Messaging.EventHubs.Producer;var credential new DefaultAzureCredential();var producer new EventHubProducerClient(namespace.servicebus.windows.net,event-hub-name,credential);3. 发送事件创建批次并发送事件using EventDataBatch batch await producer.CreateBatchAsync();foreach (var eventData in events){if (!batch.TryAdd(eventData)){await producer.SendAsync(batch);batch await producer.CreateBatchAsync();batch.TryAdd(eventData);}}if (batch.Count 0){await producer.SendAsync(batch);}4. 创建消费者处理器使用EventProcessorClient处理事件var processor new EventProcessorClient(blobClient,EventHubConsumerClient.DefaultConsumerGroup,fullyQualifiedNamespace,eventHubName,new DefaultAzureCredential());processor.ProcessEventAsync async args {Console.WriteLine($Data: {args.Data.EventBody});await args.UpdateCheckpointAsync();};processor.ProcessErrorAsync args {Console.WriteLine($Error: {args.Exception.Message});return Task.CompletedTask;};await processor.StartProcessingAsync();输入要求使用此技能时用户需要提供Event Hubs命名空间完全限定的命名空间名称如mynamespace.servicebus.windows.netEvent Hub名称事件中心的名称身份认证凭据DefaultAzureCredential或连接字符串存储账户信息用于检查点的Blob存储连接字符串和容器名称消费者需要RBAC角色需要分配适当的Azure角色Sender、Receiver或Owner输出说明技能将提供完整的代码示例包含生产者和消费者的完整实现最佳实践指南关于批次处理、检查点策略和错误处理的建议配置说明环境变量和连接配置的详细说明故障排除建议常见问题的解决方案客户端类型对比客户端用途使用场景EventHubProducerClient立即批量发送事件实时发送完全控制批处理EventHubBufferedProducerClient自动批处理和后台发送高容量、即发即弃场景EventHubConsumerClient简单事件读取仅用于原型开发不适用于生产EventProcessorClient生产环境事件处理生产环境接收事件的首选使用示例示例1批量发送事件await using var producer new EventHubProducerClient(fullyQualifiedNamespace,eventHubName,new DefaultAzureCredential());using EventDataBatch batch await producer.CreateBatchAsync();var events new[]{new EventData(BinaryData.FromString({\id\: 1, \message\: \Hello\})),new EventData(BinaryData.FromString({\id\: 2, \message\: \World\}))};foreach (var eventData in events){batch.TryAdd(eventData);}await producer.SendAsync(batch);示例2生产环境事件处理var processor new EventProcessorClient(blobClient,EventHubConsumerClient.DefaultConsumerGroup,fullyQualifiedNamespace,eventHubName,new DefaultAzureCredential());processor.ProcessEventAsync async args {Console.WriteLine($Partition: {args.Partition.PartitionId});Console.WriteLine($Data: {args.Data.EventBody});await args.UpdateCheckpointAsync();};processor.ProcessErrorAsync args {Console.WriteLine($Error: {args.Exception.Message});return Task.CompletedTask;};await processor.StartProcessingAsync();最佳实践使用EventProcessorClient接收事件不要在生产环境中使用EventHubConsumerClient策略性检查点在处理N个事件或时间间隔后检查点而不是每个事件使用分区键在分区内保证顺序性重用客户端创建一次作为单例使用线程安全使用await using确保正确释放资源处理ProcessErrorAsync始终注册错误处理程序批量事件使用CreateBatchAsync()遵守大小限制使用缓冲生产者对于高容量场景使用自动批处理检查点策略策略使用场景每个事件低容量、关键数据每N个事件平衡吞吐量/可靠性基于时间一致的检查点间隔批次完成处理逻辑批次后相关SDKSDK用途安装命令Azure.Messaging.EventHubs核心发送/接收dotnet add package Azure.Messaging.EventHubsAzure.Messaging.EventHubs.Processor生产环境处理dotnet add package Azure.Messaging.EventHubs.ProcessorAzure.ResourceManager.EventHubs管理平面创建hubdotnet add package Azure.ResourceManager.EventHubsMicrosoft.Azure.WebJobs.Extensions.EventHubsAzure Functions绑定dotnet add package Microsoft.Azure.WebJobs.Extensions.EventHubs注意事项此技能仅适用于任务明确匹配上述范围的情况输出不应替代环境特定的验证、测试或专家审查如果缺少必需的输入、权限、安全边界或成功标准请停止并请求澄清