开启自带的zookeeper
nohup bin/zookeeper-server-start.sh config/zookeeper.properties > zookeeper-run.log 2>&1 &
启动kafka
nohup bin/kafka-server-start.sh config/server.properties > kafka-run.log 2>&1 &
创建kafka主题
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --describe --topic test
描述kafka主题
bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic test
显示所有主题
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
创建生产者
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
创建消费者
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
java连接kafka生产/消费信息
package com.jlu.kafka;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.clients.producer.Callback;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;
import java.util.Collections;
import java.util.Properties;
public class KafkaTest {
public void producerSendMessage(KafkaProducer<String, String> producer){
ProducerRecord<String, String> record = new ProducerRecord<String, String>("test", "PrecisionProduction", "Kafkaer");
try {
producer.send(record);
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 同步发送消息
*/
public void producerSendMessageSync(KafkaProducer<String, String> producer){
ProducerRecord<String, String> record = new ProducerRecord<String, String>("test", "PrecisionProduction", "Kafkaer");
try {
producer.send(record).get();
}catch (Exception e){
e.printStackTrace();
}
}
class DemoProducerCallback implements Callback{
public void onCompletion(RecordMetadata recordMetadata, Exception e) {
if(e!=null){
e.printStackTrace();
}
}
}
/**
*
* @param producer
* 异步发送消息
*/
public void producerSendMessageASync(KafkaProducer<String, String> producer){
ProducerRecord<String, String> record = new ProducerRecord<String, String>("test", "Kafkaer");
try {
producer.send(record,new DemoProducerCallback());
}catch (Exception e){
e.printStackTrace();
}
}
public void consumerGetMessage(KafkaConsumer<String,String> consumer){
consumer.subscribe(Collections.singletonList("test"));
try {
while (true) {
ConsumerRecords<String, String> records = consumer.poll(100);
for (ConsumerRecord<String, String> c : records) {
System.out.println("topic is: " + c.topic() + ",value is: " + c.value());
}
}
}finally {
consumer.close();
}
}
public KafkaProducer<String,String> getProducer(){
Properties kafkaProps = new Properties();
kafkaProps.put("bootstrap.servers","localhost:9092");
kafkaProps.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer");
kafkaProps.put("value.serializer","org.apache.kafka.common.serialization.StringSerializer");
Thread.currentThread().setContextClassLoader(null);
return new KafkaProducer<String, String>(kafkaProps);
}
public KafkaConsumer<String,String> getConsumer(){
Properties kProps = new Properties();
kProps.put("bootstrap.servers","localhost:9092");
kProps.put("group.id","groupid");
kProps.put("key.deserializer","org.apache.kafka.common.serialization.StringDeserializer");
kProps.put("value.deserializer","org.apache.kafka.common.serialization.StringDeserializer");
return new KafkaConsumer<String, String>(kProps);
}
public static void main(String[] args) {
KafkaTest kafkaTest = new KafkaTest();
KafkaProducer<String, String> producer = kafkaTest.getProducer();
kafkaTest.producerSendMessage(producer);
KafkaConsumer<String, String> consumer = kafkaTest.getConsumer();
kafkaTest.consumerGetMessage(consumer);
}
}