如何将主Event Hub的数据复制到Geo-Recovery配对的副Event Hub?
Event Hub跨Geo配对实例的数据复制方案操作指南
1. 使用Azure Stream Analytics实现复制
- 创建Stream Analytics作业:在Azure门户新建Stream Analytics作业,选择靠近主Event Hub的地域以降低延迟。
- 配置输入源:添加输入类型为
Event Hub,关联主Event Hub的命名空间、实例名称,选择具备Listen权限的访问策略。 - 配置输出目标:添加输出类型为
Event Hub,关联副Event Hub的命名空间、实例名称,选择具备Send权限的访问策略。 - 编写转发查询:使用极简SQL语句直接传递数据,无需转换:
SELECT * INTO [副EventHub输出别名] FROM [主EventHub输入别名] - 启动并监控:选择启动模式(推荐
从最新事件开始)启动作业,通过Azure门户监控吞吐量、延迟等指标,按需调整流单元(SU)数量优化性能。
2. 使用Azure Function Apps实现复制
- 创建函数应用:选择合适的运行时(如.NET、Python),部署地域优先靠近主Event Hub。
- 配置Event Hub触发器:新建
Event Hub触发器,填入主Event Hub的连接字符串、实例名称,建议使用专用消费者组避免与其他应用冲突。 - 添加输出绑定:在函数配置中添加Event Hub输出绑定,指定副Event Hub的连接字符串和实例名称。
- 编写复制逻辑:以C#为例,批量转发事件的核心代码:
[FunctionName("EventHubCopy")] public static async Task Run( [EventHubTrigger("主EventHub名称", Connection = "SourceEventHubConn")] EventData[] events, [EventHub("副EventHub名称", Connection = "TargetEventHubConn")] IAsyncCollector<EventData> outputEvents, ILogger log) { foreach (var eventData in events) { await outputEvents.AddAsync(eventData); } } - 部署与优化:将连接字符串存入函数应用的应用设置(避免硬编码),开启批量处理、配置自动缩放规则应对流量波动。
3. Azure Event Hub复制工具(原GitHub文档翻译)
功能说明
该工具基于Azure Functions构建,专为跨地域/跨命名空间的Event Hub数据复制设计,适配Geo配对的Event Hub场景,具备可靠性与可扩展性。
部署步骤
- 准备配置参数:
- 主Event Hub连接字符串(需
Listen权限) - 副Event Hub连接字符串(需
Send权限) - 可选:专用消费者组名称、批量发送最大事件数、批量超时时间
- 主Event Hub连接字符串(需
- 部署函数应用:
- 通过Azure CLI创建函数应用:
az functionapp create --resource-group <资源组名> --name <函数应用名> --storage-account <存储账户名> --consumption-plan-location <地域> --runtime dotnet - 在函数应用的应用设置中添加配置项:
SourceEventHubConnectionString:主Event Hub连接字符串TargetEventHubConnectionString:副Event Hub连接字符串SourceEventHubName:主Event Hub实例名TargetEventHubName:副Event Hub实例名- 可选:
ConsumerGroup、BatchSize、BatchTimeoutInSeconds
- 通过Azure CLI创建函数应用:
- 验证与监控:向主Event Hub发送测试事件,检查副Event Hub接收情况;通过函数日志排查运行异常。
关键特性
- 支持批量处理,提升传输效率
- 内置重试逻辑,保障数据不丢失
- 可配置消费者组,避免资源冲突
- 基于消费计划按需付费,成本可控
内容的提问来源于stack exchange,提问作者pks
相关产品推荐
相关产品推荐

