2015-07-17 12 views
8

üzerinde hortonworks kum havuzuna yerel makineden KafkaProducer gönder, bu yüzden olacak broker'ı zookeeper'de görebiliyor. iletişim kodu Yani burada ... uçtan uca çalıştığını nasıl gider Sadece görmek için:ben kafka üzerine bir ileti almak için gerçekten istediğim Ya pencereler yerel makine ... üzerinde tutulması yoluyla olduğu çalıştırıyorum gerçekten basit yapımcıya sahip virtualbox

Properties props = new Properties(); 
    props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"localhost:9020"); 
    props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName()); 
    props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName()); 

    KafkaProducer<String,String> producer = new KafkaProducer<String,String>(props); 

    boolean sync = true; 
    String topic="mytopic"; 
    String key = "mykey"; 
    String value = "myvalue"; 

    ProducerRecord<String,String> producerRecord = new ProducerRecord<String,String>(topic, key, value); 

    if (sync) { 
     producer.send(producerRecord).get(); 
    } else { 
     producer.send(producerRecord); 
    } 

    producer.close(); 

Ancak bir süre sonra ben almak

Exception in thread "main" java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms. 
at org.apache.kafka.clients.producer.KafkaProducer$FutureFailure.<init>(KafkaProducer.java:437) 
at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:352) 
at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:248) 
at kafkaProducer.TestProducer.main(TestProducer.java:30) Caused by: org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms. 

ben kafka çalışan ama I, hortonworks sanal kurulum ona bağlanmak gibi görünmüyor. Sanal kutu ağ yapılandırmalarında bağlantı noktası iletmeyi denedim, ancak yine de aynı sorun var. Kaybettiğim bir şey var mı?

cevap

9

Sen de oluşturmak/Bir Kafka tüketiciyi kullanmaya çalışıyorsanız, varsayılan olarak, tahminen 9092 ve 2181 bağlantı noktalarının açılması doğrudur. Ancak Kafka, "ana bilgisayar adını" üreticilere ve tüketicilere kullanması için tanıtır, bu adı bağlandığınız yerden çözmesi gerekir. hostname çözmek ve sizin durumunuzda localhost'a gidip bir DNS gibi çözmek yardımcı bir şey yok bunu söyler barındıran makinede herhangi bir giriş var çünkü VirtualBox/VM ana bilgisayar adı değil. Host dosyalarınızı düzenleyebilirsiniz, ancak bu çok müdahaleci. Uzun lafın kısası, Kafka bu bir gereklilik olabileceğini kabul ve Kafka brokera nasıl dünyaya ne anlatıyor geçersiz kılmak için bir yapılandırma parametresi sağlar. Yapılandırma advertised.host.name ve advertised.port denir. Eğer port değiştirirken sürece, sadece advertised.host.name ayarlamak gerekir.

Kafka'nın server.properties yapılandırma dosyasında localhost'a advertised.host.name ayarı yapmayı deneyin. Bu portların açılması ile birlikte hile yapmalıdır.

İlgili konular