yeomko22 / TIL

Today I learned
1 stars 0 forks source link

kafka consumer detail #116

Open yeomko22 opened 3 years ago

yeomko22 commented 3 years ago

multithread consumer

컨슈머 운영 전략

yeomko22 commented 3 years ago

kafka consumer multi worker method

ConsumerRecords<String, String> records = consumer.poll(Duration.ofSeconds(10));
for (ConsumerRecord<String, String> record: records) {
    ConsumerWorker worker = new ConsumerWorker(record.value());
    executorService.execute(worker);
}
yeomko22 commented 3 years ago

Kafka consumer multi thread method

ExcutorService executorSrervice = Executors.newCachedThreadPool();
for (int i=0; i<CONSUMER_COUNT; i++) {
    ConsumerWorker worker = new ConsumerWorker(configs, TOPIC_NAME, i);
    executorService.execute(worker);
}
yeomko22 commented 3 years ago

컨슈머 랙

컨슈머 metrics()를 이용한 컨슈머 랙 조회

for (Map.Extry<MetricName, ? extends Metric> entry : kafkaConsumer.metrics().entrySet()) {
    if ("records-lag-max".equl(etnry.getKey().name()) |
         "records-lag".equl(etnry.getKey().name()) |
         "records-lag-avg".equl(etnry.getKey().name())) {
        Metric metric = entry.getValue();
        logger.info("{}:{}", entry.getKey().name(), metric.metricValue());
    }
}

카프카 버로우

18

yeomko22 commented 3 years ago

컨슈머 배포 프로세스

무중단 배포

컨슈머 카나리 배포