2016-06-29 3 views
0

Я построил систему очередей на Apache Kafka. Приложение будет выдавать сообщения в частности Kafka topic, и в конце концов потребителю я должен использовать все записи, созданные для этой темы.
Я написал потребителя, используя новый Java Consumer Api. Код выглядитЗапуск потребителя kafka (новый потребительский API) навсегда

Properties props = new Properties(); 
        props.put("bootstrap.servers", kafkaBrokerIp+":9092"); 
        props.put("group.id",groupId); 
        props.put("enable.auto.commit", "true"); 
        props.put("session.timeout.ms", "30000"); 
        props.put("auto.offset.reset", "earliest"); 
     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("consumertest")); 
        while (true) { 
         ConsumerRecords<String, String> records = consumer.poll(100); 
         for (ConsumerRecord<String, String> record : records){ 
          System.out.println("Data recieved : "+record.value()); 
          } 
        } 

Здесь мне нужно запустить потребитель навсегда, так что любая запись толкнула в Кафка тему производителя должен немедленно потребляться и обработано.
Итак, мое Confusion - это правильный способ использовать бесконечный цикл while (как в примере кода), чтобы потреблять данные?

ответ

0

Это работает для меня, но вы можете поместить свой внутренний цикл в блок try/catch на случай, если вы выбросите какие-либо исключения. Также рассмотрите задачу периодического повторного подключения, если вы отключитесь.

0

Да, вы можете использовать бесконечный цикл. На самом деле, это не занятый цикл. Во время каждого опроса, если данные недоступны, вызов ожидает заданный период времени.

long millisToWait = 100; 
consumer.poll(millisToWait); 

Новый потребитель автоматически обрабатывает вопросы сетевой связи. Убедитесь, что при выключении потребитель закрывается изящно.

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