You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Event Hubs Geo-DR事件复制失败:提示命名空间为只读副本

问题分析与解决方案

核心误解:Geo-DR副命名空间的只读特性

Azure Event Hubs的Geo-DR(异地灾难恢复)配对机制,仅同步命名空间的元数据(比如事件中心、消费者组、权限配置等),不会自动复制事件数据。并且在故障转移发生前,被动状态的副命名空间处于完全只读状态,不允许任何写入操作——这就是你遇到InvalidSignature: This namespace is secondary and read-only错误的直接原因。

事件复制的正确姿势

你想实现主事件中心到副中心的事件同步,不能直接往Geo-DR的副命名空间写数据,可参考两种思路:

1. 用Event Hubs Federation实现跨区域事件复制

你参考的文档提到的Event Hubs Federation,就是专门用来做跨命名空间(包括跨区域)的事件转发/复制的。它允许你在主命名空间配置转发规则,自动将事件发送到目标命名空间的事件中心——这里的目标命名空间是独立的跨区域命名空间(非Geo-DR配对的副命名空间),处于可写状态,能实时接收复制的事件。当主命名空间故障时,你可以直接切换业务到这个跨区域的目标命名空间,完成灾难恢复。

2. 调整Geo-DR使用逻辑

如果坚持要用Geo-DR配对的副命名空间,事件复制只能在故障转移发生后进行:当主命名空间故障,触发故障转移让副命名空间变为活跃可写状态,再将主命名空间的剩余事件(若还能访问)复制到副中心。但这种方式属于事后补救,无法实现实时同步。

你的代码问题

代码直接尝试往Geo-DR的副命名空间写入事件,违反了被动副命名空间的只读限制。修复方向:

  • 若用Federation:无需自己编写转发逻辑,直接在Azure门户配置主命名空间的Federation转发规则,让事件自动发送到目标可写命名空间的事件中心。
  • 若要自定义复制逻辑:把目标改为独立的可写跨区域命名空间,调整eventBufferClientFactory.CreateClient("Secondary")指向该独立命名空间的连接配置。

内容的提问来源于stack exchange,提问作者codeMonkey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 00:45:15