我的设置中有一个事件中心源连接器,它最初指向命名空间内的单个分区事件中心。最近,我们决定迁移到新的事件中心,并在同一命名空间内增加分区数量。进行必要的更改后,我为新的事件中心创建了一个新的使用者组。
但是,我的连接工作任务之一遇到了问题,该任务连续失败并出现以下错误:
Caused by: com.microsoft.azure.eventhubs.impl.AmqpException: The supplied offset '34361193416' is invalid. The last offset in the system is '357208'
有趣的是,连接到不同分区的其他任务运行顺利,并按预期处理数据。该问题似乎与新事件中心中用于分区零的旧偏移量有关。我尝试修改容错能力,并通过添加 DLQ 主题来包含毒丸处理机制,但没有成功。
我尝试在Microsoft和Confluence网站上寻找解决方案,但找不到任何相关信息。有其他人遇到过这种行为吗?我该如何解决它以确保数据正确流动而不会造成任何损失?
遇到的错误似乎与在尝试使用新事件中心的数据时使用前一个事件中心的旧偏移量有关,这导致了“无效偏移量”异常。
当切换到分区数量增加的新事件中心时,与每个分区关联的偏移量也会发生变化。但是,连接器似乎卡在分区零的旧偏移上,导致了上述问题。
要解决此问题,您需要重置连接器的偏移。执行此操作的一种方法是将连接器配置文件中的名称参数更改为新的唯一名称。通过执行此操作,连接器将重置其内部状态(包括偏移量),并开始使用新事件中心中正确位置的数据。
请务必遵循以下步骤:
请记住验证连接器的其余配置(例如连接字符串、使用者组和目标接收器主题)是否已为新事件中心正确设置。
请注意,这个解决方案是基于实践经验的,在微软和Confluence的官方文档中并没有明确概述。但是,通过执行以下步骤,我能够成功解决“无效偏移”错误