简体   繁体   English

如何知道kafka队列消耗了多少数据以及kafka队列主题中存在哪些数据?

[英]How to know howmany data consumed from kafka queue and what are data existing inside kafka queue topic?

I am producing data and consuming data in "topicDemo" Kafka to enable distributed data and process those data parallel. 我正在“ topicDemo” Kafka中生产数据并使用数据,以启用分布式数据并并行处理这些数据。

But in real time scenario need to monitor currently how much data in queue( topicDemo ) and how much data consumed from ( topicDemo ). 但是在实时场景中,需要监视当前队列中有多少数据( topicDemo )以及从中消耗了多少数据( topicDemo )。

Is there any kafka API available to give those details? 是否有任何kafka API可以提供这些详细信息?

This is code I am producing data 这是我正在生成数据的代码

  // create instance for properties to access producer configs
        Properties props = new Properties();

        // props.put("serializer.class",
        // "kafka.serializer.StringEncoder");
        props.put("bootstrap.servers", "localhost:9092");
        props.put("metadata.broker.list", "localhost:9092");

        props.put("producer.type", "async");
        props.put("batch.size", "500");
        props.put("compression.codec", "1");
        props.put("compression.topic", "topicdemo");
        // props.put("key.serializer",
        // "org.apache.kafka.common.serialization.StringSerializer");
        props.put("key.serializer", "org.apache.kafka.common.serialization.IntegerSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.ByteArraySerializer");

        org.apache.kafka.clients.producer.Producer<Integer, byte[]> producer = new KafkaProducer<Integer, byte[]>(
                props);

            producer.send(new ProducerRecord<Integer, byte[]>("topicdemo", resume.getBytes()));
        producer.close();

This is code that I am consuming data 这是我正在使用数据的代码

  String topicName = "topicDemo";

    Properties props = new Properties();

    props.put("bootstrap.servers", "localhost:9092");
    props.put("group.id", "test");
    props.put("enable.auto.commit", "true");
    props.put("auto.commit.interval.ms", "1000");
    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<String, String>(props);

    // Kafka Consumer subscribes list of topics here.
    consumer.subscribe(Arrays.asList(topicName));

    try {
        while (true) {
            ConsumerRecords<String, String> records = consumer.poll(5);
            for (ConsumerRecord<String, String> record : records) {
                Consumer cons = new Consumer();
                if (cons.SaveDetails(record.value()) == 1) {
                    consumer.commitSync();
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        consumer.close();
    }

Execute the command below to check how many messages you produced for each partition: 执行以下命令,检查每个分区产生了多少条消息:

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list host:port --topic topic_name --time -1 bin / kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list host:port --topic topic_name --time -1

Execute the command below to check how many messages the consumer have consumed and lagged behind: 执行以下命令以检查使用者已消费并落后了多少条消息:

bin/kafka-consumer-groups.sh --bootstrap-server broker1:9092 --describe --group test-consumer-group (for old consumer) bin / kafka-consumer-groups.sh --bootstrap-server broker1:9092 --describe --group test-consumer-group(适用于老消费者)

bin/kafka-consumer-groups.sh --bootstrap-server broker1:9092 --describe --group test-consumer-group --new-consumer (for new consumer) bin / kafka-consumer-groups.sh --bootstrap-server broker1:9092-描述--group test-consumer-group --new-consumer(适用于新消费者)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM