前言
kafka是一个分布式的基于发布订阅模式的消息队列。
一、安装配置kafka
1.下载
官网:https://kafka.apache.org/downloads
选择Binary downloads 下载,该下载的只需解压就可以用,Source download需要安装后使用。
2.配置log路径
在安装好的kafka文件里打开config里面的server,properties
手动创建一个log目录并把路径写进去。
3.启动
在kafka目录下运行cmd并输入如下命令启动zookeeper(后面的config\zookeeper.properties作用是以这个配置文件运行,不然就用默认的配置运行)
bin\windows\zookeeper-server-start.bat config\zookeeper.properties
再打开一个cmd窗口输入命令启动kafka
bin\windows\kafka-server-start.bat config\server.properties
二、spring整合
1.导入依赖
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.5.10.RELEASE</version>
</dependency>
2.yml配置
spring:
kafka:
bootstrap-servers: localhost:9092 # kafka连接接地址
consumer:
group-id: test-consumer-group # 消费者所属消息组
enable-auto-commit: true #设置自动提交
auto-commit-interval: 3000 #自动提交的间隔时间
group-id 在consumer.properties里面
3.测试
基于Spring Boot 的测试类里面测试。
生产者
@Component
class KafkaProduce{
@Autowired
private KafkaTemplate kafkaTemplate;
public void sendMessage(String topic, String content){
kafkaTemplate.send(topic, content);
}
}
消费者
@Component
class kafkaConsumer{
@KafkaListener(topics = {"test"})
public void handleMessage(ConsumerRecord record){
System.out.println(record.value());
}
}
测试方法
@Autowired
private KafkaProduce kafkaProduce;
@Test
void TestKafka(){
kafkaProduce.sendMessage("test", "nihao");
kafkaProduce.sendMessage("test", "nihaoma");
try {
sleep(1000 * 20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}