玩转Kafka 一、Kafka入门

一、kafka核心功能

高性能的消息发送与高性能消息消费!

二、快速简单入门

1、kafka下载,地址:https://www.apache.org/dyn/closer.cgi?path=/kafka/2.3.0/kafka_2.12-2.3.0.tgz

2、jdk准备:

链接:https://pan.baidu.com/s/1hNOmq995aRl9i22vQsqfsw  提取码:kudu 

3、zookeeper 我使用的3.4.6版本。

4、由于下载的是kafka2.3.0版本,jdk一定是jdk8以上的,而且jdk8中的低版本在过程中可能会出现启动问题。我使用的jdk版本:
jdk-8u161-linux-x64.tar.gz。

5、kafka 开启: ./kafka-server-start.sh ../config/server.properties &

要是连接自己的zookeeper,地址信息在server.properties中的改下IP

如果要使用kafka自带的,可以在kafka/bin/下使用zookeeper-server-start.sh ../config/zookeeper.properties

6、以上完成kafka简单安装

7、创建topic,后面再详细介绍每个的含义,这里只想快速完成一个示例。创建topic 用于消息发送与接收,名称为test,一个分区(partition)、一个副本

扫描二维码关注公众号,回复: 9533224 查看本文章

kafka-topics.sh --create --zookeeper localhost:2181 --topic test --partitions 1 --replication-factor 1

8、查看topic.kafka-topics.sh --describe --zookeeper localhost:2181 --topic test

9、发送消息。kafka默认提供发送消息的脚本。执行下面命令后输入的字符会进入kafka

kafka-console-producer.sh --broker-list localhost:9092 --topic test

10,消费数据。kafka提供的消费脚本。

kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

三、Java Kafka生产消费数据(0.9.x之后的api)

1、生产者

package com.back.kafka;

import java.util.Properties;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

import org.apache.kafka.clients.producer.Callback;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;
/**
  *
  * <p>Title: TestKafka</p>  
  * <p>Description: kafka 生产数据 此为0.9.x的代码方式</p>  
  * @author back  
  * @date 2019年9月5日
 */
public class TestKafka {

	
	public static void main(String[] args) throws InterruptedException, ExecutionException {
		
		Properties prop = new Properties();
		prop.put("bootstrap.servers", "192.168.231.135:9092");
		prop.put("acks", "all");
		prop.put("retries", 0);
		prop.put("batch.size", 16384);
		prop.put("linger.ms", 1);
		prop.put("buffer.memory", 33554432);
		prop.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
		prop.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
		
		Producer<String,String> producer = new KafkaProducer<>(prop);
		
		for (char i = 'a'; i < 'z'; i++) {
			Thread.sleep(2000);
			Future<RecordMetadata> send = 
					producer.send(new ProducerRecord<String, String>("test","words", String.valueOf(i)+"  message"), new Callback() {
						
						@Override
						public void onCompletion(RecordMetadata metadata, Exception exception) {
							System.out.println("发送成功!");
						}
					});
		}
		
		producer.close();
	}
}

2、消费者

package com.back.kafka;

import java.util.Arrays;
import java.util.Properties;

import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
/**
  *
  * <p>Title: ConsumeKafka</p>  
  * <p>Description: 此为0.9.x之后的kafka消费方式</p>  
  * @author back  
  * @date 2019年9月6日
 */
public class ConsumeKafka {

	public static void main(String[] args) {
		
		Properties prop = new Properties();
		prop.put("bootstrap.servers", "192.168.231.135:9092");
		prop.put("group.id", "test");
		prop.put("enable.auto.commit", "true");
		prop.put("auto.commit.interval.ms", "1000");
		prop.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
		prop.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
		
		KafkaConsumer<String, String> comsumer = new KafkaConsumer<String,String>(prop);
		comsumer.subscribe(Arrays.asList("test"));
		while(true){
			ConsumerRecords<String, String> records = comsumer.poll(100);
			for (ConsumerRecord<String, String> consumerRecord : records) {
				System.out.printf("offset = %d,key = %s, value = %s%n",consumerRecord.offset()
						,consumerRecord.key(),consumerRecord.value());
			}
		}
	}
}
发布了78 篇原创文章 · 获赞 6 · 访问量 8549

猜你喜欢

转载自blog.csdn.net/MrBack/article/details/100179472