目前学习到kafka这个处理大数据的分布式应用,在配置本地服务并调用时遇到了困难,现在理解后,出一篇文章😁
首先要在本地安装zookeeper和kafka。
一、Zookeeper的安装与配置
1. 下载压缩包:官网途径:
https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gzhttps://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz2. 解压后进入D:\JavaProperties\apache-zookeeper-3.6.4-bin
如下图位置,路径名称可以自定义。
2.1 新建文件夹 data
2.2 进入 conf 文件夹,复制 zoo_sample.cfg ,在原位置粘贴并改名为 zoo.cfg,如下图:
这里有个小技巧分享一下:点击工具栏上的 查看/显示,可以显示隐藏文件,文件扩展名
2.3 配置zoo.cfg文件
打开zoo.cfg后,修改 dataDir 和 clientPort 两个字段,后者默认为 2181,可以不修改
前者路径分隔要使用“\\”
2.4 配置系统环境变量
第一步,先完成ZOOKEEPER_HOME的配置,如下图顺序
第二步,配置Path变量
按如下步骤配置
3. 检查是否配置完成
win+r,输入cmd,在终端中输入 zkServer,出现如下输出就表示配置成功。注意配置的端口是否正确
二、Kafka的安装与配置
1. 下载压缩包:官网途径:
https://archive.apache.org/dist/kafka/3.5.1/kafka_2.12-3.5.1.tgzhttps://archive.apache.org/dist/kafka/3.5.1/kafka_2.12-3.5.1.tgz2. 进入D:\JavaProperties\kafka_2.12-3.5.1,新建文件夹kafka-logs
2.1 修改下图所选文件的配置
2.2 具体修改项
listeners=PLAINTEXT://localhost:9092
log.dirs=D:\\JavaProperties\\kafka_2.12-3.5.1\\kafka-logs
zookeeper.connect=localhost:9093
最后一项,若未修改zookeeper的默认端口,则将9093改为2181
3. 检查是否配置完成
3.1 首先打开zookeeper
3.2 新开窗口,进入kafka安装目录,输入启动命令:
.\bin\windows\kafka-server-start.bat .\config\server.properties
三、Idea连接Kafka本地服务器并调用
1. 创建项目,连接Kafka
2. 安装 Kafka 和 Big Data Tools Core 插件,需要科学上网
3. 连接本地服务器
要让终端在后台运行 Kafka 服务,才能正确连接
4. Kafka 配置
因为本地运行的 Kafka 服务占用了 8080 端口,所以改spring工程端口号
模拟Sender 和 Reciver,代码如下
Sender:
package com.vikTorx.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("kafka")
public class KafkaSender {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
//发送消息方法
@RequestMapping("/send")
@ResponseBody
public String send() {
kafkaTemplate.send("Recipe", "Hongshaorou", "美味好吃");
return "success";
}
}
Reciver:
package com.vikTorx.demo;
import java.util.Optional;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;
@Component
public class KafkaReceiver {
// 完善此处的代码
@KafkaListener(topics = "Recipe")
public void listen(ConsumerRecord<?,?> record) {
Optional<?> kafkaMessages = Optional.ofNullable(record.value());
if (kafkaMessages.isPresent()) {
Object message = kafkaMessages.get();
System.out.println("message = " + message);
}
}
}
5. 结果展示
浏览器输入http://127.0.0.1:8081/kafka/send 发送请求,在Idea终端查看结果
ok,全部完成啦,求点赞