1.流程
- 获取订阅kafka信息(kafka配置、topic)
- 起一个线程
- 线程里创建consumer去订阅改kafka的topic
2.自己的kafkaConsumer类
public class VisualKafkaConsumer extends Thread{
private KafkaConsumer<String, String> consumer;
private Properties props;
private String topicName;
public VisualKafkaConsumer(Properties properties, String name){
this.props = properties;
this.topicName = name;
}
public void run() {
try {
//1.创建消费者
consumer = new KafkaConsumer<String, String>(this.props);
//2.订阅Topic
//创建一个只包含单个元素的列表,Topic的名字叫作customerCountries
consumer.subscribe(Collections.singletonList(this.topicName));
while (true) {
//消费者是一个长期运行的程序,通过持续轮询向Kafka请求数据。在其他线程中调用consumer.wakeup()可以退出循环
//在100ms内等待Kafka的broker返回数据.超市参数指定poll在多久之后可以返回,不管有没有可用的数据都要返回
ConsumerRecords<String, String> records = consumer.poll(100);
for (ConsumerRecord<String, String> record : records) {
log.info("kafka消费{}信息:{}",record.topic(),record.value());
}
}