无法在经纪人上构建KafkaProducer

时间:2017-12-05 09:19:03

标签: apache-kafka

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的构造被阻止没有例外。

以前有人见过这样的事吗?

1 个答案:

答案 0 :(得分:0)

这很令人尴尬,因为它是由java版本差异引起的。 我使用jdk1.8构建它,而它是集群上的jdk1.6。