繁体   English   中英

org.apache.kafka.common.errors.NotLeaderForPartitionException:此服务器不是该主题分区的领导者 - 继续出现

[英]org.apache.kafka.common.errors.NotLeaderForPartitionException: This server is not the leader for that topic-partition - keep appearing

我们正在使用 spring,kafka(spring kafka 2.4.5,spring 云 stream 3.0.1) 我们有以下配置。 每个主题的多个代理/主题有 8 个分区,复制因子为 3,多个 spring 引导消费者。

当我们关闭一个代理作为弹性测试的一部分时,我们得到以下异常,即使在我们启动服务器之后,仍然得到相同的错误。

org.apache.kafka.common.errors.NotLeaderForPartitionException: This server is not the leader for that topic-partition.

2020-05-19 18:39:57.598 ERROR [service,,,] 1 --- [ad | producer-5] o.s.k.support.LoggingProducerListener    : Exception thrown when sending a message with key='{49, 50, 49, 50, 54, 53, 56}' and payload='{123, 34, 115, 111, 117, 114, 99, 101, 34, 58, 34, 72, 67, 80, 77, 34, 44, 34, 110, 97, 109, 101, 34...' to topic topicname
2020-05-19 18:39:57.598  WARN [service,,,] 1 --- [ad | producer-5] o.a.k.clients.producer.internals.Sender  : [Producer clientId=producer-5] Received invalid metadata error in produce request on partition topicname-4 due to org.apache.kafka.common.errors.NotLeaderForPartitionException: This server is not the leader for that topic-partition.. Going to request metadata update now

我检查了谷歌,大多数人说将重试值更改为大于 1 会起作用,但由于即使在代理启动后也会出现错误,我不确定它是否有效。

这是我在属性文件中的内容:

spring.cloud.stream.kafka.binder.brokers=${output.server}
spring.cloud.stream.kafka.binder.requiredAcks=1
spring.cloud.stream.bindings.outputChannel.destination=${output.topic}
spring.cloud.stream.bindings.outputChannel.content-type=application/json

以及使用 kafka 流 API 发送消息的一行代码。

`client.outputChannel().send(MessageBuilder.withPayload(message).setHeader(KafkaHeaders.MESSAGE_KEY, message.getId().getBytes()).build());`

请帮我。

谢谢公羊

经纪人倒闭

当关闭其中一个代理时,生产者的元数据更新可能尚未更新。 因此,当它尝试为该代理中的分区发送数据时,它将失败,然后请求元数据更新并再次尝试正确的代理,即现在的新领导者。

代理重启

当代理再次添加回集群时,Controller 将触发主题分区的重新平衡。 因此,尚未使用此新元数据更新的生产者在尝试将数据发送到分区领导已更改的代理时也会显示失败的操作。 在下次重试新的元数据更新后,这不应该发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM