如何仅打印kafka记录值,而不是所有其他数据?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何仅打印kafka记录值,而不是所有其他数据?相关的知识,希望对你有一定的参考价值。
所以我是kafka的新手,我一直在关注一些教程并在Internet上搜索,因此我设法用Java设置了生产者和使用者脚本。但是,不仅仅是打印消息(值),我在eclipse控制台中得到以下结果:
ConsumerRecord(topic = MyTopic, partition = 0, leaderEpoch = 0, offset = 131, CreateTime = 1579178094212, serialized key size = 10, serialized value size = 31, headers = RecordHeaders(headers = [], isReadOnly = false), key = Simple Key, value = Custom test message)
相反,如果我在Windows控制台中运行使用者,则只会得到该值,这意味着我会收到“自定义测试消息”。
如何在Eclipse控制台上从kafka使用者记录中选择并仅打印“ value”属性?或与此相关的任何其他财产。
编辑:
对于询问我如何打印所有数据的人,这是我的使用者脚本中的代码:
package com.okta.javakafka.kafkajava;
import java.util.Arrays;
import java.util.Properties;
import java.util.UUID;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SimpleConsumer
public static void main(String[] args) throws ClassNotFoundException
ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) org.slf4j.LoggerFactory.getLogger(ch.qos.logback.classic.Logger.ROOT_LOGGER_NAME);
root.setLevel(ch.qos.logback.classic.Level.INFO);
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(ConsumerConfig.GROUP_ID_CONFIG, UUID.randomUUID().toString());
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
props.put("key.deserializer",Class.forName("org.apache.kafka.common.serialization.StringDeserializer"));
props.put("value.deserializer", Class.forName("org.apache.kafka.common.serialization.StringDeserializer"));
KafkaConsumer<String,String> consumer = new KafkaConsumer<String,String>(props);
consumer.subscribe(Arrays.asList("MyTopic"));
try
while(true)
ConsumerRecords<String,String> records = consumer.poll(1000);
for(ConsumerRecord<String,String> record : records)
System.out.println(record.toString());
finally
consumer.close();
答案
您执行System.out.println(record.toString());
。绝对是关于整个ConsumerRecord
。
仅打印您需要执行的值:
System.out.println(record.value());
以上是关于如何仅打印kafka记录值,而不是所有其他数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何获取数据列表,特定日期仅从每个日期获取 6 条记录而不是更多
Excel VBA函数仅粘贴打印区域内的内容而不是整个工作表?