package jp.gr.java_conf.ogibayashi.prometheus; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecords; import org.apache.kafka.clients.consumer.KafkaConsumer; import org.slf4j.LoggerFactory; import org.slf4j.Logger; class ConsumerThread implements Runnable { private static final Logger LOG = LoggerFactory.getLogger(ConsumerThread.class); private PropertyConfig props; private KafkaCollector collector; public ConsumerThread(KafkaCollector collector, PropertyConfig props) { this.collector = collector; this.props = props; } @Override public void run() { KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props.getProperties()); consumer.subscribe(props.getTopicsPattern(), new KteConsumerRebalanceListener(consumer)); try { while (!Thread.interrupted()) { ConsumerRecords<String, String> records = consumer.poll(100); if (records.count() > 0) LOG.info("Got records count: " + String.valueOf(records.count())); for (ConsumerRecord<String, String> record : records) { String topic = record.topic(); if(props.get(PropertyConfig.Constants.KAKFA_CONSUMER_REMOVEPREFIX.key,null) != null) { topic = topic.replaceFirst("^" + props.get(PropertyConfig.Constants.KAKFA_CONSUMER_REMOVEPREFIX.key), ""); } collector.add(topic, record.value()); } } } finally { LOG.info("Shutting down consumer"); consumer.close(); } } }