【发布时间】:2016-09-26 12:38:33
【问题描述】:
我正在尝试在我的 server.properties 文件中使用 auto.create.topics.enable=true 连接到我的代理。但是,当我尝试使用 Java 客户端生产者连接到代理时,我得到以下error。
1197 [kafka-producer-network-thread | producer-1] 错误 org.apache.kafka.clients.producer.internals.Sender - 未捕获的错误 kafka生产者I/O线程: org.apache.kafka.common.protocol.types.SchemaException:读取错误 字段“topic_metadata”:读取大小为 619631 的数组时出错,只有 37 可用字节 org.apache.kafka.common.protocol.types.Schema.read(Schema.java:73) 在 org.apache.kafka.clients.NetworkClient.parseResponse(NetworkClient.java:380) 在 org.apache.kafka.clients.NetworkClient.handleCompletedReceives(NetworkClient.java:449) 在 org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:269) 在 org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:229) 在 org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:134) 在 java.lang.Thread.run(Unknown Source)
以下是我的客户生产者代码。
public static void main(String[] argv){
Properties props = new Properties();
props.put("bootstrap.servers", "http://XX.XX.XX.XX:9092");
props.put("acks", "all");
props.put("retries", 0);
props.put("batch.size", 16384);
props.put("linger.ms", 0);
props.put("buffer.memory", 33554432);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("block.on.buffer.full",true);
Producer<String, String> producer = new KafkaProducer<String, String>(props);
try{ for(int i = 0; i < 10; i++)
{ producer.send(new ProducerRecord<String, String>("topicjava", Integer.toString(i), Integer.toString(i)));
System.out.println("Tried sending:"+i);}
}
catch (Exception e){
e.printStackTrace();
}
producer.close();
}
有人可以帮我解决这个问题吗?
【问题讨论】:
标签: apache-kafka kafka-producer-api