kafka介绍
根据官网的介绍,ApacheKafka®是一个分布式流媒体平台,它主要有3种功能:
- 发布和订阅消息流,这个功能类似于消息队列,这也是kafka归类为消息队列框架的原因
 - 以容错的方式记录消息流,kafka以文件的方式来存储消息流
 - 可以再消息发布的时候进行处理
 
使用场景
- 在系统或应用程序之间构建可靠的用于传输实时数据的管道,消息队列功能
 - 建实时的流数据处理程序来变换或处理数据流,数据处理功能
 
Kafka目前主要作为一个分布式的发布订阅式的消息系统使用 下图为消息传输流程

- Producer即生产者,向Kafka集群发送消息,在发送消息之前,会对消息进行分类,即Topic,上图展示了两个producer发送了分类为topic1的消息,另外一个发送了topic2的消息。
 - Topic即主题,通过对消息指定主题可以将消息分类,消费者可以只关注自己需要的Topic中的消息
 - Consumer即消费者,消费者通过与kafka集群建立长连接的方式,不断地从集群中拉取消息,然后可以对这些消息进行处理。
 
下载
在kafka官网 http://kafka.apache.org/downloads下载到最新的kafka安装包,选择下载二进制版本的tgz文件
安装
首先确保你的机器上安装了jdk,kafka需要java运行环境,以前的kafka还需要zookeeper,新版的kafka已经内置了一个zookeeper环境,所以我们可以直接使用。
如果只需要进行最简单的尝试的话我们只需要解压到任意目录即可,这里我们将kafka压缩包解压到/home目录

kafka解压目录下下有一个config的文件夹,里面放置的是我们的配置文件
consumer.properites 消费者配置
producer.properties 生产者配置
server.properties kafka服务器的配置,此配置文件用来配置kafka服务器 目前仅介绍几个最基础的配置
- broker.id 申明当前kafka服务器在集群中的唯一ID,需配置为integer,并且集群中的每一个kafka服务器的id都应是唯一的,我们这里采用默认配置即可
 - listeners 申明此kafka服务器需要监听的端口号,如果是在本机上跑虚拟机运行可以不用配置本项,默认会使用localhost的地址,如果是在远程服务器上运行则必须配置,例如: 
listeners=PLAINTEXT:// 192.168.180.128:9092。并确保服务器的9092端口能够访问 - zookeeper.connect 申明kafka所连接的zookeeper的地址 ,需配置为zookeeper的地址,由于本次使用的是kafka高版本中自带zookeeper,使用默认配置即可 
zookeeper.connect=localhost:2181 
运行
启动zookeeper
1  | #前台启动  | 
启动kafka
1  | [root@CentOS124 kafka2.11]# bin/kafka-server-start.sh config/server.properties  | 
配置kafka集群
- 条件有限,在同一个机器上启动三个broker来模拟kafka集群,三个broker使用另外安装的同一个zookeeper服务(实际集群中,每个broker通常在不同的机器上,也会使用不同host的zookeeper)
 
1  | #复制server.properties配置文件为三份,分别起名为server.properties,server-2.properties,server-3.properties  | 
springBoot中如何使用kafka
首先创建一个springBoot项目 引入spring-kafka
application.properties 配置
1  | server.port=8080  | 
创建Producer生产者
1  | package com.example.modules;  | 
创建消费者
1  | 
  | 
运行后就可以看到控制台输出了
1  | (SpringRunner.class)  | 
kafka 配置文件参数详解
https://www.cnblogs.com/alan319/p/8651434.html
kafka的配置分为 broker、producter、consumer三个不同的配置
