[英]How to know howmany data consumed from kafka queue and what are data existing inside kafka queue topic?
我正在“ topicDemo” Kafka中生產數據並使用數據,以啟用分布式數據並並行處理這些數據。
但是在實時場景中,需要監視當前隊列中有多少數據( topicDemo )以及從中消耗了多少數據( topicDemo )。
是否有任何kafka API可以提供這些詳細信息?
這是我正在生成數據的代碼
// 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();
這是我正在使用數據的代碼
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();
}
執行以下命令,檢查每個分區產生了多少條消息:
bin / kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list host:port --topic topic_name --time -1
執行以下命令以檢查使用者已消費並落后了多少條消息:
bin / kafka-consumer-groups.sh --bootstrap-server broker1:9092 --describe --group test-consumer-group(適用於老消費者)
bin / kafka-consumer-groups.sh --bootstrap-server broker1:9092-描述--group test-consumer-group --new-consumer(適用於新消費者)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.