合流Kafka Golang客户端制作人“代理:同步副本不足”

合流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

我试图测试一个制作人使用Golang客户端向kafka集群上的主题发送消息。这对于在本地集群上编写主题非常有效,我只是从他们的集群复制并粘贴了示例代码

我在控制台上收到消息消费者无问题

然后,我尝试做同样的事情,只使用我的远程kafka群集主题注:我也尝试过在字符串中不使用端口:

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