一、基础服务开启
-
运行条件:Java环境
-
解压kafka,现版本kafka已经集成有zookeeper,无需另外下载。
- kafka-server 是 kafka 的服务端,对应配置文件 server.properties;
- zookeeper-server 是 Hadoop 的一个子项目,它是分布式系统中的协调系统,可提供的服务主要有:配置服务、名字服务、分布式同步、组服务等。对应配置文件 zookeeper.properties 。
-
修改config文件夹的 server.properties 的 log.dirs 和 zookeeper.properties 的 dataDir 的路径(存放日志的路径)
-
在命令提示符依次运行 bin/windows 下的 zookeeper-server-start.bat 和 kafka-server-start.bat ,命令如下(注意空格):
(1) zookeeper-server-start.bat ..\..\config\zookeeper.properties
(2) kafka-server-start.bat ..\..\config\server.properties
二、kafka 的 springboot 项目搭建
- 服务打开后,新建springboot项目,注入 kafka 依赖:
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
- 补全配置文件:
spring:
kafka:
bootstrap-servers: localhost:9092
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
consumer:
group-id: consumerTest
enable-auto-commit: true
auto-commit-interval: 1000
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
- 生产者(发送方)代码:
@RestController
@RequestMapping("kafka")
public class ProducerController {
@Autowired
private KafkaTemplate<String,String> kafkaTemplate;
@RequestMapping("send")
public String send(String msg){
kafkaTemplate.send("cgz",msg);
return "success";
}
}
- 消费者(接收方)代码:
@Component
public class Consumer {
@KafkaListener(topics = "cgz")
public void listener(ConsumerRecord<?,?> consumerRecord){
System.out.printf("topic = %s, offset = %d, value = %s \n",consumerRecord.topic(),consumerRecord.offset(),consumerRecord.value());
}
}
- 运行项目,打开连接:localhost:8080/kafka/send?msg=abc
注意:启动前注意清理先前的文件缓存