提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文
目录
一、kafka定义
一、kafka定义
Kafka传统定义:是一个分布式的基于发布/订阅模式的消息队列(Message Queue)
传统的消息队列主要应用场景也就是缓存/消峰、解耦和异步通信
kafka最新定义:开源的分布式事件流平台(Event Streaming Platform)也可用于高性能数据管道、流分析、数据集成和关键任务的应用
kafka官网:http://kafka.apache.org/
kafka名词解释
- topic:Kafka将消息分门别类,每一类的消息称之为一个主题(Topic)
- producer:发布消息的对象称之为主题生产者(Kafka topic producer)
- consumer:订阅消息并处理发布的消息的对象称之为主题消费者(consumers)
- broker:已发布的消息保存在一组服务器中,称之为Kafka集群。集群中的每一个服务器都是一个代理(Broker)。 消费者可以订阅一个或多个主题(topic),并从Broker拉数据,从而消费这些已发布的消息。
二、kafka安装和配置
1.jdk环境
首先需要安装Java环境,同时配置环境变量
2.zookeeper安装
Zookeeper是安装Kafka集群的必要组件,Kafka通过Zookeeper来实施对元数据信息的管理,包括集群、主题、分区等内容。
同样在官网下载安装包到指定目录解压缩
ZooKeeper 官网: Apache ZooKeeper
下面以一个zookeeper-3.4.14.tar.gz安装包为例,上传到linux服务器,也可以到官网上下载
(1)解压压缩包
tar zxvf zookeeper-3.4.14.tar.gz
(2)修改配置文件,进入安装路径conf目录,并将zoo_sample.cfg文件修改为zoo.cfg
cd zookeeper-3.4.14 #进入安装目录
cd conf #进入配置目录
mv zoo_sample.cfg zoo.cfg # 把文件改名
(3)创建存放数据的目录 data
在zookeeper安装的根目录创建目录 data
mkdir data
创建完的效果如下:
(4)配置数据存储目录
进入conf目录下,编辑zoo.cfg
vi conf/zoo.cfg
修改内容,如下图
(5)启动zookeeper
进入bin目录
./zkServer.sh start # 启动
./zkServer.sh status # 查看状态
./zkServer.sh restart # 重启
./zkServer.sh stop # 关闭
启动后可以查看进行
jps
3.kafka安装
(1)官网下载
下载地址:http://kafka.apache.org/downloads
也可以在今天的资源文件夹中找到这个安装,直接上传到服务器即可
(2)解压
tar zxvf kafka_2.12-2.2.1.tgz
(3)修改参数
修改config目录下的server.properties文件,效果如下
- 修改listeners=PLAINTEXT://host:9092
- log.dirs=/root/kafka_2.12-2.2.1/logs 需要在kafka安装目录新建logs目录
(4)启动kafka
在kafka的根目录
bin/kafka-server-start.sh config/server.properties #启动kafka
查看进程
注意:启动kafka之前,必须先启动zookeeper
三、kafka入门案例
1.3.1 创建工程kafka-demo
创建kafka-demo工程,引入依赖信息
<properties>
<kafka.client.version>2.0.1</kafka.client.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>${kafka.client.version}</version>
</dependency>
</dependencies>
做一个java普通的生产者和消费者只需要依赖kafka-clients
即可
1.3.2 消息生产者
创建类:
package com.kafka.simple;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.protocol.types.Field;
import java.util.Properties;
/**
* 消息生产者
*/
public class ProducerFastStart {
private static final String TOPIC = "itcast-heima";
public static void main(String[] args) {
//添加kafka的配置信息
Properties properties = new Properties();
//配置broker信息
properties.put("bootstrap.servers","192.168.200.130:9092");
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,"org.apache.kafka.common.serialization.StringSerializer");
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,"org.apache.kafka.common.serialization.StringSerializer");
properties.put(ProducerConfig.RETRIES_CONFIG,10);
//生产者对象
KafkaProducer<String,String> producer = new KafkaProducer<String, String>(properties);
//封装消息
ProducerRecord<String,String> record = new ProducerRecord<String, String>(TOPIC,"00001","hello kafka !");
//发送消息
try {
producer.send(record);
}catch (Exception e){
e.printStackTrace();
}
//关系消息通道
producer.close();
}
}