Produce(String broker,String topic,int count){
this.topic=topic;
props.put("bootstrap.servers",broker);
props.put("buffer.memory",67108864);
props.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer","org.apache.kafka.common.serialization.StringSerializer");
}
public void run(){
InetAddress ia=null;
try {
ia = InetAddress.getLocalHost();
}catch (Exception e){
logger.error(e);
}
List<KafkaProducer<String,String>> producers=new ArrayList<KafkaProducer<String,String>>();
System.out.println(6);
for(int i=0;i<10;i++){
try {
KafkaProducer<String, String> pro = new KafkaProducer<String, String>(props);
System.out.println(6.5);
producers.add(pro);
}catch (Exception e){
e.printStackTrace();
}
}
System.out.println(7);
...
}
我正在努力向卡夫卡提供一些样本数据。
群集是CDH 5.5.0,kafka版本是0.10.2。
一旦我能够运行它来生成topicpartitions的数据。 为了从远程生成主题,我将advertised.host.name设置为每个代理的主机名,然后我可以从集群外的客户端生成主题。
但是从那时起我就无法在任何代理上运行相同的代码,即使我删除了曾经的advertised.host.name。
当我尝试在hadoop集群中的任何服务器上运行它作为Jar(7个服务器,3个作为Kafka代理),除了运行zookeeper之外,System.out将不会达到“6.5”,意味着KafkaProducer的构造被阻止没有例外。
以前有人见过这样的事吗?
答案 0 :(得分:0)
这很令人尴尬,因为它是由java版本差异引起的。 我使用jdk1.8构建它,而它是集群上的jdk1.6。