Kafka Producer无法发送消息

时间:2017-08-08 13:38:52

标签: apache-kafka

我对卡夫卡很新。

使用Kafka 0.11

  

活着的经纪人数量' 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 

3 个答案:

答案 0 :(得分:16)

你是如何开始经纪人的?什么是server.properties文件。下载的软件包提供的软件包应该包含以下行:

offsets.topic.replication.factor=1

要清楚,您看到的错误与您尝试发布的主题无关。今天,Kafka不再为Zookeeper中的消费者保存主题偏移,而是在名为__consumer_offsets的“内部主题”中保存。当然,如果你有1个代理,你的复制因子不能为3.所以我想看看你的server.properties。 如果缺少上述属性,则默认值为3.

答案 1 :(得分:1)

这意味着您的集群具有一些默认的复制因子设置,以覆盖此设置,您需要编辑server.properties并使用选择值添加复制因子参数

offsets.topic.replication.factor=1

在我的情况下,我想使用单节点Zookeeper运行单节点kafka,在这种情况下,您需要创建复制因子为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.

答案 2 :(得分:0)

就我而言,我的错误也类似。

ERROR [KafkaApi-2] Number of alive brokers '0' does not meet the required replication factor '1' for the offsets topic (configured via 'offsets.topic.replication.factor'). This error can be ignored if the cluster is starting up and not all brokers are up yet. (kafka.server.KafkaApis)


集群:2 Brokers (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_PLAINTEXT在此群集中为security.inter.broker.protocol。该错误似乎也与端口可用性有关。