package consumer;
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 java.util.ArrayList;
import java.util.Properties;
public class ConsumerTest {
public static void main (String arg[]) {
Properties properties = getConsumerProperties();
KafkaConsumer<String,String> comsumer = new KafkaConsumer(properties);
// 订阅主题
comsumer.subscribe(new ArrayList<String>());
// 获取数据
ConsumerRecords<String,String> records = comsumer.poll(1000);
// 遍历处理数据
for (ConsumerRecord<String,String> record : records) {
System.out.println(record.key()+ record.value());
}
// 关闭消费者
comsumer.close();
/* // 一般情况下消费者会一直尝试拉取消息并消费消息,所以获取数据和处理数据需要阻塞住(自旋)
while (true) {
ConsumerRecords<String,String> records = comsumer.poll(1000);
// 遍历处理数据
for (ConsumerRecord<String,String> record : records) {
System.out.println(record.key()+ record.value());
}
}*/
}
public static Properties getConsumerProperties() {
Properties properties = new Properties();
// 连接的集群
properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,"xxxxxx");
// 消费者组
properties.put(ConsumerConfig.GROUP_ID_CONFIG,"groupID");
// 开启自动提交
properties.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG,"true");
// 自动提交延迟时间
properties.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG,"10000");
// 消费者 offset 消费策略
properties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG,"earliest/latest");
// key - value 反序列化
properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
return properties;
}
}