合流Kafka Golang客户端制作人“代理:同步副本不足”
我试图测试一个制作人使用Golang客户端向kafka集群上的主题发送消息。这对于在本地集群上编写主题非常有效,我只是从他们的集群复制并粘贴了示例代码 我在控制台上收到消息消费者无问题 然后,我尝试做同样的事情,只使用我的远程kafka群集主题注:我也尝试过在字符串中不使用端口:合流Kafka Golang客户端制作人“代理:同步副本不足”,go,apache-kafka,confluent-platform,Go,Apache Kafka,Confluent Platform,我试图测试一个制作人使用Golang客户端向kafka集群上的主题发送消息。这对于在本地集群上编写主题非常有效,我只是从他们的集群复制并粘贴了示例代码 我在控制台上收到消息消费者无问题 然后,我尝试做同样的事情,只使用我的远程kafka群集主题注:我也尝试过在字符串中不使用端口: p, err := kafka.NewProducer(&kafka.ConfigMap{"bootstrap.servers":"HOSTNAME.amazonaws.com:9092,HOSTNAME2.a
p, err := kafka.NewProducer(&kafka.ConfigMap{"bootstrap.servers":"HOSTNAME.amazonaws.com:9092,HOSTNAME2.amazonaws.com:9092,HOSTNAME3.amazonaws.com:9092"})
它将打印以下错误:
Delivery failed: test[0]@end(Broker: Not enough in-sync replicas)
不过,console producer没有问题:
./bin/kafka-console-producer.sh --broker-list HOSTNAME.amazonaws.com:9092,HOSTNAME2.amazonaws.com:9092,HOSTNAME3.amazonaws.com:9092 --topic test
>proving that this works
控制台使用者接收到它:
bin/kafka-console-consumer.sh --bootstrap-server HOSTNAME.amazonaws.com:9092,HOSTNAME2.amazonaws.com:9092,HOSTNAME3.amazonaws.com:9092 --topic test --from-beginning
proving that this works
我做的最后一件事是检查该主题有多少同步副本。如果我读对了,最小值应该是2,有3
./bin/kafka-topics.sh --describe --bootstrap-server HOSTNAME1.amazonaws.com:9092,HOSTNAME2.amazonaws.com:9092,HOSTNAME3.amazonaws.com:9092 --topic test
Topic:test PartitionCount:1 ReplicationFactor:1 Configs:min.insync.replicas=2,flush.ms=10000,segment.bytes=1073741824,retention.ms=86400000,flush.messages=9223372036854775807,max.message.bytes=1000012,min.cleanable.dirty.ratio=0.5,unclean.leader.election.enable=true,retention.bytes=-1,delete.retention.ms=86400000,segment.ms=604800000
Topic: test Partition: 0 Leader: 3 Replicas: 3 Isr: 3
你知道我还可以研究什么吗?你有min.insync.replicas=2,但是这个主题只有一个副本
如果您的request.required.acks=all是默认值,那么生产者将失败,因为它无法将您制作的内容复制到leader broker中所需的最小副本集
我相信console producer只将该属性设置为1
有三个
实际上只有一个。这是经纪人ID 3。如果实际上有三个复制副本,您将看到总共三个独立的数字作为ISR。您有min.insync.replicas=2,但主题只有一个复制副本
如果您的request.required.acks=all是默认值,那么生产者将失败,因为它无法将您制作的内容复制到leader broker中所需的最小副本集
我相信console producer只将该属性设置为1
有三个
实际上只有一个。这是经纪人ID 3。如果实际上有三个副本,您将看到总共三个独立的数字作为ISR主题是否已经创建?听起来你的集群有问题。如果为新主题配置了至少2个代理,则在有2个代理可用之前,您将无法生成新主题的代理。是,主题已创建。在示例中,我是从控制台生产者那里写的。控制台使用者显示它已被读取。golang代码可以在我的本地集群上编写主题,但不适用于aws上的主题。在本地工作表明您的代码是可以的。在给集群几分钟时间重新平衡后,您是否再次尝试了AWS?此外,不建议为3个代理提供2个副本。查看本文以了解更多信息。1个或3个副本可能更适合您的设置。@PassKit I将我的主题的复制因子增加到了3,它成功了!主题是否已创建?听起来你的集群有问题。如果为新主题配置了至少2个代理,则在有2个代理可用之前,您将无法生成新主题的代理。是,主题已创建。在示例中,我是从控制台生产者那里写的。控制台使用者显示它已被读取。golang代码可以在我的本地集群上编写主题,但不适用于aws上的主题。在本地工作表明您的代码是可以的。在给集群几分钟时间重新平衡后,您是否再次尝试了AWS?此外,不建议为3个代理提供2个副本。查看本文以了解更多信息。1个或3个副本可能更适合您的设置。@PassKit I将我的主题的复制因子增加到了3,它成功了!
./bin/kafka-topics.sh --describe --bootstrap-server HOSTNAME1.amazonaws.com:9092,HOSTNAME2.amazonaws.com:9092,HOSTNAME3.amazonaws.com:9092 --topic test
Topic:test PartitionCount:1 ReplicationFactor:1 Configs:min.insync.replicas=2,flush.ms=10000,segment.bytes=1073741824,retention.ms=86400000,flush.messages=9223372036854775807,max.message.bytes=1000012,min.cleanable.dirty.ratio=0.5,unclean.leader.election.enable=true,retention.bytes=-1,delete.retention.ms=86400000,segment.ms=604800000
Topic: test Partition: 0 Leader: 3 Replicas: 3 Isr: 3