我有1,000多个主题。中断后,我发现列出主题时仅显示少数主题。如果我写一个现有的但不可用的主题,它会说:
[2020-04-17 16:17:09,153] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 2 : {ONLP_NEWORDER_1428=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
但是,此后后续写入成功并且该主题可用并在列出所有主题时显示。我有什么办法可以使主题再次出现而不必写回去?
答案 0 :(得分:0)
kafka代理上线的延迟可能是由于以下两种情况之一造成的:
方案1:推迟选举领导人:
错误消息-O NLP_NEWORDER_1428 = LEADER_NOT_AVAILABLE 表示该主题的Leader节点尚未联机。
中断后,领导者选举将花费一些时间(几秒钟到几分钟,具体取决于配置和网络条件)
可以通过优化kafka配置来最大程度地减少领导人选举的时间。
有关优化kafka的更多信息:
https://www.confluent.io/wp-content/uploads/Optimizing-Your-Apache-Kafka-Deployment-1.pdf
场景2:Kafka配置为在发布第一条消息时创建主题
默认情况下,kafka设置为在生产者发布第一条消息时创建一个主题。
This setting controls the automatic creation of topics.
producer.auto.create.topics
The possible values for this setting are:
allow-server-side --> Default. Create topic on first message published
client-side --> Create topic at the first request from a consumer
false --> Do not create topics automatically
(a)允许服务器端
(b)否-确实允许创建自动主题。
(c)客户端
当使用者尝试使用消息时,允许创建主题。 (仅适用于经纪人>版本0.10.1.1)
更多信息:
https://docs.confluent.io/current/installation/configuration/broker-configs.html
https://docs.confluent.io/current/installation/configuration/producer-configs.html
答案 1 :(得分:0)
您可以使用kafka-leader-election.sh脚本或Scala的LeaderElectionCommand对象触发分区的领导者重新选举。
bin/kafka-leader-election.sh --bootstrap-server kafka:9092 --all-topic-partitions --election-type unclear