一、Zk
下载zk
链接:https://pan.baidu.com/s/1fmOSl08mKs-nVJwDgLUrCg
提取码:6666
1、解压新建data
2、进入conf文件夹 配置文件名称改为zoo.cfg,再修改配置dataDir
3、配置环境变量:ZOOKEEPER_HOME:你的zookeeper安装路径;
启动 zkServer.cmd
二、Kafka
链接:https://pan.baidu.com/s/16v2EA0oFIuEEXETvQgDsnQ
提取码:6666
1、解压,新建logs
2、修改kafka\config\ server.properties中的log.dirs路径为你的logs路径
必须cmd进入D:\kafka目录下运行kafka-server-start.bat
运行命令:.\bin\windows\kafka-server-start.bat .\config\server.properties
问题:Kafka启动提示“此时不应有 \Java\jdk1.8.0_73\lib\dt.jar”
Jdk路径不应该有空格/括号
三、Canal配置kafka生产者
链接:https://pan.baidu.com/s/1O7m95qhlcl9FUVT0_w0PaQ
提取码:6666
1、修改文件canal_1.1.4\conf\example\instance.properties
2、修改文件canal_1.1.4\conf\canal.properties,指定为kafka
3、指定kafka的地址
4、默认group.Id为test-consumer-group,在监听topic时要用到
问题:kafka启动报错java.io.IOException: Map failed,内存溢出
修改D:\kafka\bin\windows下启动文件kafka-server-start.bat,改256/512M
问题:ERROR Error while deleting the clean shutdown file in dir ………
删除kafka-logs下的所有日志
四、Springboot整合kafka
1、Pom文件引入:
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.0.0</version>
</dependency>
2、Yml文件配置
spring:
kafka:
bootstrap-servers: 127.0.0.1:9092 #服务器的ip及端口,可以写多个,服务器之间用“:”间隔
3、监听代码:
@KafkaListener(topics = "pp_kafka",groupId = "test-consumer-group")
public void listen (ConsumerRecord<?, ?> record) throws Exception {
String json = (String) record.value();
JSONObject jsonObject = JSONObject.parseObject(json);
String sqlType = jsonObject.getString("type");
JSONArray data = jsonObject.getJSONArray("data");
for (int i=0;i<data.size();i++){
JSONObject userJson = data.getJSONObject(i);
String id = userJson.getString("Id");
if("UPDATE".equals(sqlType) || "INSERT".equals(sqlType)){
redisUtils.set(id,userJson.toJSONString());
return;
}
else if("DELETE".equals(sqlType)){
if(redisUtils.get(id)!=null)
redisUtils.del(id);
return;
}
}