文章目录
1 Kafka安装
安装Kafka之前,需要安装JDK、Zookeeper、Scala
- Kafka依赖Zookeeper,在安装Kafka之前,需要安装、运行Zookeeper。
- 而且Kafka是由Scala和Java编写,所以也需要安装jdk、scala。
1.1 JDK及Scala安装
JDK安装教程:https://blog.csdn.net/qq_27630263/article/details/97030030
Scala官网下载地址:https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.msi
-
- 下载完之后,双击执行安装程序,选择安装路径:
D:\kafkaTool\scala
- 下载完之后,双击执行安装程序,选择安装路径:
-
- 安装完成之后自动添加环境变量,若没有,则手动添加
- 安装完成之后自动添加环境变量,若没有,则手动添加
-
- 测试是否安装成功
- 测试是否安装成功
1.2 Zookeeper安装
官网下载地址:https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz
-
- 下载完成后解压,并新建
data
文件夹
- 下载完成后解压,并新建
-
- 复制conf目录下
zoo_sample.cfg
文件,重命名为zoo.cfg
1)修改dataDir
路径
2)新增audit.enable=true
。zookeeper新版本启动的过程中,zookeeper新增的审核日志是默认关闭,所以控制台输出ZooKeeper audit is disabled,标准的修改方式应该是在zookeeper的配置文件zoo.cfg新增一行audit.enable=true即可
- 复制conf目录下
-
- 新增环境变量
- 新增环境变量
-
- cmd命令
启动Zookeeper服务:zkServer
客户端连接Zookeeper:zkCli
- cmd命令
1.3 Kafka安装
下载地址:https://pan.baidu.com/s/1Av4ZwQPUaAntwVxz79Ne9w?pwd=yyds
-
- 下载完成后解压,并新建
logs
文件夹
- 下载完成后解压,并新建
-
- 修改Kafka配置文件
server.properties
- 修改Kafka配置文件
1)修改
log.dirs
参数:log.dirs=D:\\kafkaTool\\kafka_2.12-3.5.1\\logs
2)修改listeners
参数:listeners=PLAINTEXT://localhost:9092
1.4 Kafka启动
由于Kafka依赖于Zookeeper,所以要先启动Zookeeper,再启动Kafka。
-
- 先启动Zookeeper服务,cmd命令:
zkServer
- 先启动Zookeeper服务,cmd命令:
-
- 再启动Kafka服务,进入到Kafka安装目录(D:\kafkaTool\kafka_2.12-3.5.1),
然后cmd命令:.\bin\windows\kafka-server-start.bat .\config\server.properties
- 再启动Kafka服务,进入到Kafka安装目录(D:\kafkaTool\kafka_2.12-3.5.1),
1.5 Kafka相关操作
进入D:\kafkaTool\kafka_2.12-3.5.1\bin目录,执行cmd命令。
-
- 创建topics:
kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
-
- 查看topics列表:
kafka-topics.bat --bootstrap-server localhost:9092 --list
-
- 打开一个producer(生产者):
kafka-console-producer.bat --broker-list localhost:9092 --topic test
-
- 打开一个consumer(消费者):
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning
1.6 报错解决
1.6.1 重启Kafka失败,报错: ERROR Shutdown broker because all log dirs in D:\kafkaTool\kafka_2.12-3.5.1\logs have failed (kafka.log.LogManager)
将
logs
文件下内容都删掉,重启成功
2 SpringBoot简单使用Kafka
2.1 依赖
<!--kafka依赖-->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
2.2 yml
spring:
kafka:
producer:
bootstrap-servers: 127.0.0.1:9092
2.3 controller
package com.example.projectmanager.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
@RestController
@RequestMapping("/kafka")
public class TestController {
@Autowired
private KafkaTemplate<Object, Object> kafkaTemplate;
private static final String topic = "test";
// 接收消息
@KafkaListener(id = "helloGroup", topics = topic)
public void listen(String msg) {
System.out.println("hello receive value: " + msg);
// hello receive value: hello kafka
}
@GetMapping("/hello")
public String hello(String msg) {
// 发送消息
kafkaTemplate.send(topic, msg);
return "hello";
}
}
2.4 测试
-
- cmd中发送消息,controller接收
-
- 前端调用controller发送msg,cmd接收者接收msg