存在卡夫卡主题,但经纪人无法提供

时间:2020-04-17 20:23:29

标签: apache-kafka kafka-consumer-api kafka-producer-api

我有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)

但是,此后后续写入成功并且该主题可用并在列出所有主题时显示。我有什么办法可以使主题再次出现而不必写回去?

2 个答案:

答案 0 :(得分:0)

kafka代理上线的延迟可能是由于以下两种情况之一造成的:

  1. 推迟举行领导人选举
  2. 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)允许服务器端

  • 这是默认设置
  • 此设置允许生产者自动创建主题 如果代理的“ auto.create.topics.enable ”设置设置为 true

(b)否-确实允许创建自动主题。

(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

答案 1 :(得分:0)

您可以使用kafka-leader-election.sh脚本或Scala的LeaderElectionCommand对象触发分区的领导者重新选举。

bin/kafka-leader-election.sh --bootstrap-server kafka:9092  --all-topic-partitions --election-type unclear
相关问题