向 eventhub 发送和接收消息引发 amqp 异常

时间:2021-06-09 08:08:00

标签: java azure spring-cloud-stream azure-eventhub

我对事件中心的实施和理解不熟悉。我按照微软文档 enter link description here

中的说明进行操作

但是,当我运行接收器代码时,我遇到了以下错误。

<块引用>

引起:com.azure.core.amqp.exception.AmqpException: Receiver 'nil' 更高的时代“4”已经存在。接收器 'nil',纪元 0 无法创建。确保您正在创建接收器增加 epoch 值以确保连接性,或确保所有旧的 epoch 接收器 关闭或断开连接。

谁能建议原因以及我如何解决此错误?

谢谢

1 个答案:

答案 0 :(得分:1)

此异常表明您配置的消费者组中已经有另一个消费者正在声明对您尝试读取的分区的独占所有权。大多数情况下,这些是事件处理器类型,因为它们使用所有者级别(错误消息中的时期)机制来帮助控制负载平衡。

在您的情况下,看到有一个所有者级别为 4 的使用者正在运行,而新实例使用的所有者级别为 0,我最好的猜测是您从旧版中获得了 EventProcessorHost {1}} SDK 针对该事件中心和消费者组配对运行,并且您尝试使用 Microsoft.Azure.EventHubs SDK 中具有相同配置的处理器。如果是这种情况,重要的是要知道来自两个不同 SDK 代的处理器不兼容并且不会在单个处理器集群中协同工作;相反,他们将争夺所有权。

缓解措施将是停止其他消费者或在不同的消费者组中运行您的新消费者。

相关问题