Jestem nowicjuszem w Kafka 0.9 i testowaniem niektórych funkcji Zdałem sobie sprawę z dziwnego zachowania w implementowanym przez Java Konsumencie (KafkaConsumer
).Metoda poll() Kafki Consumer zostaje zablokowana
Broker Kafka znajduje się w zewnętrznej maszynie Ambari.
Nawet jeśli mógłbyś zaimplementować producenta i zacząć wysyłać wiadomości do zewnętrznego brokera, nie mam pojęcia dlaczego, kiedy konsument próbuje odczytać zdarzenia (sondowanie), utknie.
Wiem, że producent działa dobrze, ponieważ mogę spożywać wiadomości przez konsolę (która działa lokalnie na ambari). Ale kiedy wykonuję Java Consumer, nic się nie dzieje, po prostu utknie. Debugowanie kodu I widział, że to dostaje zablokowane na linii poll()
:
ConsumerRecords<String, String> records = consumer.poll(100);
Timeout nie robi nic, by the way. Nie ma znaczenia, jeśli wstawisz 0, 100 lub 1000 ms, konsument zostanie zablokowany w tej linii i nie przekroczy limitu czasu ani nie wyrzuci wyjątków.
próbowałem wszelkiego rodzaju właściwości alternatywnych, takich jak advertised.host.name, advertised.listener ... i tak dalej, z zerowym szczęścia.
Każda pomoc będzie bardzo ceniona. Z góry dziękuję!
Czy jesteś w stanie konsumować wiadomości w inny sposób, np. Za pomocą 'kafka-console-consumer.sh'? –
Tak, jestem. Z maszyny, która jest hostem ambari, mogę spożywać wiadomości za pośrednictwem konsolowego klienta. –
A co z maszyną, na której działa użytkownik? Czy wypróbowałeś tam konsola? –