参考:https://www.cnblogs.com/zlslch/p/5966004.html
1、KafkaProducerOps.java
//运行成功
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.Random;
public class KafkaProducerOps {
public static void main(String[] args) throws IOException {
Properties props = new Properties();
props.put("bootstrap.servers", "192.168.0.129:9092,192.168.0.129:9093,192.168.0.129:9094");
props.put("serializer.class", "kafka.serializer.StringEncoder");
props.put("request.required.acks", "1");//16M
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
/**
* 两个泛型参数
* 第一个泛型参数:指的就是kafka中一条记录key的类型
* 第二个泛型参数:指的就是kafka中一条记录value的类型
*/
String[] girls = new String[]{"姚慧莹", "刘向前", "周 新", "杨柳"};
Producer<String, String> producer = new KafkaProducer<String, String>(props);
String topic = "mytest";//props.getProperty(Constants.KAFKA_PRODUCER_TOPIC);
String key = "1";
String value = "今天的姑娘们很美111";
ProducerRecord<String, String> producerRecord =
new ProducerRecord<String, String>(topic, key, value);
producer.send(producerRecord);
producer.close();
}
}
2、KafkaConsumerOps.java
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
import java.util.Properties;
import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
public class KafkaConsumerOps {
public static void main(String[] args)throws IOException{
Properties props = new Properties();
props.put("bootstrap.servers", "192.168.0.129:9092");
props.put("group.id", "logGroup");
// 自动确认设置
// props.put("enable.auto.commit", "true");
props.put("enable.auto.commit", "false");
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");
Consumer<String,String> consu = new KafkaConsumer<String,String>(props);
Collection<String> topics = Arrays.asList("mytest");
//消费者订阅topic
consu.subscribe(topics);
ConsumerRecords<String,String>consumerRecords = null;
while(true){
//接下来就要从topic中拉去数据
consumerRecords = consu.poll(1000);
//遍历每一条记录
for(ConsumerRecord<String, String> consumerRecord : consumerRecords){
long offset = consumerRecord.offset();
int partition = consumerRecord.partition();
Object key = consumerRecord.key();
Object value = consumerRecord.value();
System.out.println(offset+" "+partition+" "+key+" "+value);
}
}
}
}
先执行消费者程序,再执行生产者程序,在消费者终端可以看到如下的输出:
6 0 1 今天的姑娘们很美111