Springboot集成kafka的简单demo
1. Kafka是什么?
(To Do)
2. Kafka配置
⾸先需要安装kafka,到下载kafka,然后解压到指定⽂件夹。
启动zookeeper(kafka内置),在根⽬录下打开powershell,输⼊指令后,不关闭页⾯。
.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties
启动kafka,不关闭页⾯。
.\bin\windows\kafka-server-start.bat .\config\server.properties
创建消息topic,值为<your topic>
.\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic <your topic>
创建⽣产者产⽣消息,
.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic <your topic>
创建消费者接收消息,
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic <your topic> --from-beginning
在spring boot项⽬启动之前,需要先启动zookeeper和kafka,并创建相应的topic(不过kafkatemplate貌似在发送指定topic消息时会⾃动创建该topic,不过试验没有成功)
3. Spring boot 集成 Kafka
3.1 添加maven依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
</dependency>
3.2 application配置⽂件
推荐使⽤.yml格式的配置⽂件,输⼊
spring:
kafka:
# 消费者
consumer:
group-id: foo
auto-offset-reset: earliest
bootstrap-servers: localhost:9092
# ⽣产者
producer:
bootstrap-servers: localhost:9092
key-serializer: org.apache.kafkamon.serialization.StringSerializer value-serializer: org.apache.kafkamon.serialization.StringSerializer
3.3 简单demo
编写,
ample.kafkademo;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;
@Component
public class SimpleListener {
@KafkaListener(topics = {"topic1", "topic2"})
public void listen1(String data) {
System.out.println(data);
}
}
编写消息⽣产者,
ample.kafkademo;
import org.springframework.beans.factory.annotation.Autowired;
import org.KafkaTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SimpleController {
@Autowired
private KafkaTemplate<Object, Object> kafkaTemplate;
@GetMapping("/send/{messge}")
public String send(@PathVariable String messge) {bootstrap项目
kafkaTemplate.send("topic1", "topci1:" + messge);
kafkaTemplate.send("topic2", "topci2:" + messge);
return messge;
}
}
3.4使⽤postman进⾏调试
打开postman输⼊GET请求,
可以看到idea⾥返回了监听到的信息,
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论