我有1000多个主题。在一次中断之后,我发现在列出主题时只显示了少数主题。如果我写了一个现有但不可用的主题,它会说:
[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)
但是,在这之后,后续的写操作就成功了,并且当我列出所有主题时,主题就显示出来了。有没有什么技巧可以让我不用写信就能把主题写回来?
2条答案
按热度按时间8hhllhi21#
Kafka经纪人上线的延迟可能是由于以下两种情况之一:
领导人选举推迟
kafka被配置为在发布第一条消息时创建主题。
情景一:领导人选举推迟:
错误消息-onlp\u neworder\u 1428=leader\u not\u available表示主题的leader节点尚未联机。
中断后,领导人选举需要一些时间(根据配置和网络条件,需要几秒钟到几分钟)
通过优化Kafka配置,可以最大限度地减少领导人选举所需的时间。
有关优化Kafka的更多信息:
https://www.confluent.io/wp-content/uploads/optimizing-your-apache-kafka-deployment-1.pdf
场景#2:kafka配置为在发布第一条消息时创建主题
默认情况下,kafka设置为在生产者发布第一条消息时创建主题。
(a) 允许服务器端
这是默认设置
如果代理的“auto.create.topics.enable”设置为true,则此设置允许生产者自动创建主题。
(b) false-允许自动创建主题。
(c) 客户端
允许在使用者尝试使用消息时创建主题(仅在代理>版本0.10.1.1上受支持)
更多信息:
https://cwiki.apache.org/confluence/display/kafka/kip-487%3a+client-side+automatic+topic+creation+on+producer
https://docs.confluent.io/current/installation/configuration/broker-configs.html
https://docs.confluent.io/current/installation/configuration/producer-configs.html
https://docs.cloudera.com/hdpdocuments/hdp3/hdp-3.1.5/kafka-working-with-topics/content/creating_a_kafka_topic.html
sg3maiej2#
您可以使用kafka-leader-election.sh脚本或scala的leaderelectioncommand对象触发分区的领导人重新选举。