2016-06-15 4 views
2

I установки одного узел Кафка и попробовать простой шаблон паб/суб так:высокого уровня Кафка потребитель апи не работает

Из моего ноутбука я производить некоторые сообщения по коде:

Properties props = new Properties(); 
    props.put("bootstrap.servers", "192.168.23.152:9092"); 
    props.put("acks", "all"); 
    props.put("retries", 0); 
    props.put("batch.size", 16384); 
    props.put("linger.ms", 1); 
    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"); 

    Producer<String, String> producer = new KafkaProducer<>(props); 
    for (int i = 0; i < 10; i++) 
     producer.send(new ProducerRecord<String, String>("tp3", Integer.toString(i), "hello " + Integer.toString(i))); 

    producer.close(); 

и я также написал простой Потребителя:

Properties props = new Properties(); 
    props.put("bootstrap.servers", "192.168.23.152:9092"); 
    props.put("group.id", "g1"); 
    props.put("client.id","client1"); 
    props.put("enable.auto.commit", "true"); 
    props.put("auto.commit.interval.ms", "1000"); 
    props.put("auto.offset.reset", "latest"); 
    props.put("session.timeout.ms", "30000"); 
    props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); 
    props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); 
    KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props); 
    consumer.subscribe(Arrays.asList("tp3")); 
    while (true) { 
     ConsumerRecords<String, String> records = consumer.poll(100); 
     for (ConsumerRecord<String, String> record : records) 
      System.out.printf("offset = %d, key = %s, value = %s", record.offset(), record.key(), record.value()); 
     TimeUnit.SECONDS.sleep(1000); 
    } 

Но потребитель не получить ничего

Кто-нибудь, пожалуйста, объясните мне, что случилось? Я уверен, что производитель работает хорошо, потому что я использовать консольную команду для получения сообщений, и она работала отлично (я придаю доказал изображение здесь) enter image description here

Любые помогает ценятся :(:(:(

+0

В случае, если люди задаются вопросом о версии, это 2.11-0.10.0.0 (как видно на скриншоте). Я борюсь с тем же. Производитель работает отлично, но потребительский API не хочет работать, что бы я ни делал. Я использую в основном тот же код, что и вы, за исключением того, что я использую localhost и «enable.auto.commit» в false. –

+0

Я немного тестирую параметры конфигурации. Я увеличил время опроса до 1000 и 5000, а при запуске потребителя это действительно работает - иногда. Итак, здесь есть некоторые проблемы с тиминигами, которые я еще не определил. –

+0

Я подключил их через Vpn (наша политика Vpn запретила многие порты), мне не предоставили доступ к порту 9092, поэтому я должен использовать прокси-сервер для подключения, я думаю, что это главная причина. Мои сомнения просто «почему» Я использовал прокси-сервер socks со многими другими случаями, и они хорошо работали :(:(но не удалось с Kafka –

ответ

0

По к Кафка FAQ:

Почему делает мой потребитель не получает никаких данных

по умолчанию, когда потребитель старт? в первый раз, он игнорирует все существующие данные в теме и будет потреблять новые данные только после запуска потребителя. Если это так, попробуйте отправить еще несколько данных после запуска потребителя. В качестве альтернативы вы можете настроить пользователя, установив auto.offset.reset на «самый ранний» для нового потребителя в 0,9 и «самый маленький» для старого потребителя.

Смежные вопросы