KafKa(下载,安装,简单使用教程)

 

一、安装zookeeper

1、下载zookeeper

下载路径:http://mirrors.hust.edu.cn/apache/zookeeper/

版本选择 apache-zookeeper-3.7.0-binbin里边的文件内容比较全,否则有可能出现“找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain”新版本zookeeper易犯错误

2、解压文件
解压文件至目录  D:\MyFolder\SoftWare\Zookeeper\Instail

3、进入Zookeeper设置目录更新配置文件

  •    在D:\MyForder\SoftWare\Zookeeper\Instail\apache-zookeeper-3.7.0-bin目录下创建data,和log文件夹
  •    conf目录下复制“zoo_sample.cfg”重命名为“zoo.cfg”,打开文件,编辑:

      dataDir=D:\\MyForder\\SoftWare\\Zookeeper\\Instail\\apache-zookeeper-3.7.0-bin\\data

      dataLogDir=D:\\MyForder\\SoftWare\\Zookeeper\\Instail\\apache-zookeeper-3.7.0-bin\\log

4、修改zookeeper端口(我这边改成2222),可不修改,默认2181

5、启动zookeeper

  

 

  测试是否启动成功:

 

 点击zkCli.cmd,如果出现以上字样则表示启动成功

 

二、安装kafKa

1、下载安装包

下载地址:http://kafka.apache.org/downloads.html

版本选择2.12-2.8.1

2、解压文件

解压文件至目录D:\Kafka\kafka_2.12-2.8.1(kafka安装目录不要放的太深,否则有可能在cmd中执行启动命令时候报指令符太长的错误)

在D:\Kafka\kafka_2.12-2.8.1\config目录下打开打开server.properties

  • 编辑:log.dirs=D:\\Kafka\\kafkalogs(此目录需要自己创建,此目录的作用是记录kafka日志)
  • 编辑:zookeeper.connect=localhost:2222(2222对应zookeeper设置端口)

3)修改Kafka端口(我这边不做修改),可不修改,默认9092

4、运行Kafka
打开dos窗口,将当前目录切换至=D:\Kafka\kafka_2.12-2.8.1\bin\windows

执行命令kafka-server-start.bat ../../config/server.properties

执行命令前保证zookeeper已正常运行

 

 

 

三、简单使用案例

 

1、创建springboot项目:

引入pom依赖:

<dependency>

    <groupId>org.springframework.kafka</groupId>

    <artifactId>spring-kafka</artifactId>

</dependency>

application.yml配置:

 

server:
port: 8081
servlet:
context-path: /framedemo

kafka:
bootstrap-servers: kafka's-ip:9092
#=============== provider =======================
producer:
retries: 0
# 每次批量发送消息的数量
batch-size: 16384
buffer-memory: 33554432
# 指定消息key和消息体的编解码方式,StringSerializer支持Json对象的序列化
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
#=============== consumer =======================
# 指定默认消费者group id
consumer:
group-id: test-consumer-group
auto-offset-reset: earliest
enable-auto-commit: true
auto-commit-interval: 100
# 指定消息key和消息体的编解码方式,StringDeserializer支持Json对象的反序列化
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
配置类:
@Configuration
public class KafkaInitialConfiguration {
// 创建一个名为testtopic的Topic并设置分区数为8,分区副本数为2
@Bean
public NewTopic initialTopic() {
return new NewTopic("testtopic",8, (short) 1 );
}
// 如果要修改分区数,只需修改配置值重启项目即可
// 修改分区数并不会导致数据的丢失,但是分区数只能增大不能减小
/**
@Bean
public NewTopic updateTopic() {
return new NewTopic("testtopic",10, (short) 2 );
}
**/
}
消息提供者:
@RestController
@RequestMapping("/KafkaProducer")
public class KafkaProducerController {
@Autowired
private KafkaTemplate<String,Object> kafkaTemplate;
// 发送消息
@RequestMapping("/normal")
public void sendMessage1() {
String normalMessage="my test";
kafkaTemplate.send("topic1", normalMessage);
}
}
消息消费者:
@Component
public class KafkaConsumer {
// 消费监听
@KafkaListener(groupId = "test-consumer-group",topics = {"topic1"})
public void onMessage1(ConsumerRecord<?, ?> record){
// 消费的哪个topic、partition的消息,打印出消息内容
System.out.println("简单消费:"+record.topic()+"-"+record.partition()+"-"+record.value());
}
}

 

 

 
posted @ 2021-12-08 14:44  靓仔徐  阅读(3510)  评论(0编辑  收藏  举报