Kafka生产者无法发送消息

13

我对Kafka非常陌生。

使用Kafka 0.11版本

活着的 broker 数量 '1' 不满足偏移量主题的所需副本因子 '3'(通过 'offsets.topic.replication.factor' 配置)。

在发送主题消息时,我收到以上错误信息。

kafka-topics --zookeeper localhost:2181 --topic test --describe
Topic:test1 PartitionCount:1    ReplicationFactor:1 Configs:
Topic: test1    Partition: 0    Leader: 0   Replicas: 0 Isr: 0 

1
那么你的问题是什么?对我来说,错误信息非常清晰明了。 - C-Otto
3个回答

22

你是如何启动代理的?server.properties文件是什么?下载包中提供的文件应该有以下一行:

offsets.topic.replication.factor=1

为了明确一下,您看到的错误与您尝试发布的主题无关。今天,Kafka不再将消费者的主题偏移保存在Zookeeper中,而是保存在名称为__consumer_offsets的“内部主题”中。当然,如果您只有1个代理,则无法具有3个复制因子。因此,我想查看您的server.properties文件。如果上述属性缺失,则默认值为3。


1
如果上述属性缺失,则默认值为3。这似乎是一个重要的细节,否则你会一直寻找不存在的值。 :) - user1071914

1
在我的情况下,我的错误也类似。 错误 [KafkaApi-2] 活动代理数“0”不满足偏移主题的所需复制因子“1”(通过“offsets.topic.replication.factor”配置)。如果集群正在启动并且尚未启动所有代理,则可以忽略此错误。(kafka.server.KafkaApis)

集群:2个代理(ID=1,ID=2),主机名分别为hostname-1hostname-2
Kafka版本:1.0.1

listeners=PLAINTEXT://:9090,SSL://:9091,PLAINTEXT_EXT://:9092,SSL_EXT://:9093,SASL_SSL://:9094,SASL_PLAINTEXT://:9095

两个代理的server.properties都设置为offsets.topic.replication.factor=1

但我将我的公告主机名配置为hostname-1,在用于代理间通信的协议上,这导致代理ID=2不断出现以上错误。

advertised.listeners=PLAINTEXT://hostname-2:9090,SSL://hostname-2:9091,PLAINTEXT_EXT://<EXTERNAL_IP>:9092,SSL_EXT://<EXTERNAL_IP>:9093,SASL_SSL://hostname-1:9094,SASL_PLAINTEXT://hostname-1:9095

修正了对SASL_SSLSASL_PLAINTEXT的错误。

PS:在此集群中,SASL_PLAINTEXTsecurity.inter.broker.protocol。这个错误似乎也与端口可用性有关。


1
这意味着您的集群具有默认的复制因子设置,如果要覆盖此设置,则需要编辑 server.properties 并添加复制因子参数,并设置您选择的值。
offsets.topic.replication.factor=1

在我的情况下,我想要运行单节点kafka和单节点zookeeper,为此您需要创建副本因子为1的主题,否则您将会得到一个错误。
mansoor@c2dkb05-usea1d:~$ ./bin/kafka-topics.sh --create --zookeeper zookeeper-svc:2181 --replication-factor 2 --partitions 2 --topic mqttDeviceEvents

Error while executing topic command : Replication factor: 2 larger than available brokers: 1.
[2020-06-18 14:39:46,533] ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 2 larger than available brokers: 1.

创建主题的正确方法是在您拥有单节点Kafka时执行

mansoor@c2dkb05-usea1d:$ ./bin/kafka-topics.sh --create --zookeeper zookeeper-svc:2181 --replication-factor 1 --partitions 2 --topic mqttDeviceEvents
Created topic mqttDeviceEvents.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接