缠丝猫 发表于 2024-5-20 10:24:18

教你怎样搞定springboot集成kafka

本文分享自华为云社区《手拉手入门springboot+kafka》,作者:QGS。
安装kafka

启动Kafka本地环境需Java 8+以上
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处置惩罚消费者在网站中的所有动作流数据。
Kafka启动方式有Zookeeper和Kraft,两种方式只能选择此中一种启动,不能同时使用。
Kafka下载https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
https://bbs-img.huaweicloud.com/blogs/img/image1_521.png
解压tar -xzf kafka_2.13-3.7.0.tgz
https://bbs-img.huaweicloud.com/blogs/img/image2_528.png
一、Zookeeper启动Kafka(kafka内置zookeeper)
Kafka依靠Zookeeper
1、启动Zookeeper 2、启动Kafka
使用kafka自带Zookeeper启动
./zookeeper-server-start.sh ../config/zookeeper.properties &
./zookeeper-server-stop.sh ../config/zookeeper.properties
https://bbs-img.huaweicloud.com/blogs/img/image3_515.png
./kafka-server-start.sh ../config/server.properties &
https://bbs-img.huaweicloud.com/blogs/img/image4_473.png
./kafka-server-stop.sh ../config/server.properties
二、Zookeeper服务器启动Kafka
Zookeeper服务器安装
https://zookeeper.apache.org/
https://bbs-img.huaweicloud.com/blogs/img/image5_446.png
https://dlcdn.apache.org/zookeeper/zookeeper-3.9.2/apache-zookeeper-3.9.2-bin.tar.gz
tar zxvf apache-zookeeper-3.9.2-bin.tar.gz
https://bbs-img.huaweicloud.com/blogs/img/image6_403.png
https://bbs-img.huaweicloud.com/blogs/img/image7_376.png
配置Zookeeper服务器
cp zoo_sample.cfg zoo.cfg
https://bbs-img.huaweicloud.com/blogs/img/image8_347.png
启动Zookeeper服务器
https://bbs-img.huaweicloud.com/blogs/img/image9_286.png
./zkServer.sh start
修改Zookeeper端口
https://bbs-img.huaweicloud.com/blogs/img/image10_263.png
Zoo.cfg添加内容
admin.serverPort=8099
apache-zookeeper-3.9.2-bin/bin目录下重启Zookeeper
https://bbs-img.huaweicloud.com/blogs/img/image11_233.png
Zookeeper服务器启动kafka
/opt/kafka_2.13-3.7.0/bin目录下
./kafka-server-start.sh ../config/server.properties &
https://bbs-img.huaweicloud.com/blogs/img/image12_221.png
Kafka配置文件server.properties
https://bbs-img.huaweicloud.com/blogs/img/image13_196.png
三、使用KRaft启动Kafka
https://bbs-img.huaweicloud.com/blogs/img/image14_189.png
UUID通用唯一识别码(Universally Unique Identifier)
1、天生Cluster UUID(集群UUID):./kafka-storage.sh random-uuid
https://bbs-img.huaweicloud.com/blogs/img/image15_176.png
2.格式化kafka日记目录:./kafka-storage.sh format -t 3pMJGNJcT0uLIBsZhbucjQ -c ../config/kraft/server.properties
https://bbs-img.huaweicloud.com/blogs/img/image16_164.png
3.启动kafka:./kafka-server-start.sh ../config/kraft/server.properties &
https://bbs-img.huaweicloud.com/blogs/img/image17_148.png
springboot集成kafka

https://bbs-img.huaweicloud.com/blogs/img/image1_581.png
创建topic时,若不指定topic的分区(partition)数量使,则默认为1个分区(partition)
https://bbs-img.huaweicloud.com/blogs/img/image2_582.png
修改server.properties文件

vim server.properties
listeners=PLAINTEXT://0.0.0.0:9092
https://bbs-img.huaweicloud.com/blogs/img/image3_578.png
advertised.listeners=PLAINTEXT://192.168.68.133:9092
https://bbs-img.huaweicloud.com/blogs/img/image4_531.png
https://bbs-img.huaweicloud.com/blogs/img/image5_497.png
https://bbs-img.huaweicloud.com/blogs/img/image6_444.png
springboot加入依靠kafka

<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>加入spring-kafka依靠后,springboot主动装配好kafkaTemplate的Bean
https://bbs-img.huaweicloud.com/blogs/img/image7_412.png
application.yml配置连接kafka
spring:
kafka:
bootstrap-servers: 192.168.68.133:9092生产者

发送消息
https://bbs-img.huaweicloud.com/blogs/img/image8_380.png
@Resource
private KafkaTemplate<String,String> kafkaTemplate;

@Test
void kafkaSendTest(){
kafkaTemplate.send("kafkamsg01","hello kafka");
}https://bbs-img.huaweicloud.com/blogs/img/image9_315.png
消费者

吸收消息
https://bbs-img.huaweicloud.com/blogs/img/image10_290.png
@Component
public class KafkaConsumer {

@KafkaListener(topics = {"kafkamsg01","test"},groupId = "123")
public void consume(String message){
System.out.println("接收到消息:"+message);
}

}若没有配置groupid
Failed to start bean 'org.springframework.kafka.config.internalKafkaListenerEndpointRegistry'; nested exception is java.lang.IllegalStateException: No group.id found in consumer config, container properties, or @KafkaListener annotation; a group.id is required when group management is used.
https://bbs-img.huaweicloud.com/blogs/img/image11_258.png
https://bbs-img.huaweicloud.com/blogs/img/image12_245.png
@Component
public class KafkaConsumer {

@KafkaListener(topics = {"kafkamsg01","test"},groupId = "123")
public void consume(String message){
System.out.println("接收到消息:"+message);
}

}https://bbs-img.huaweicloud.com/blogs/img/image13_216.png
 
点击关注,第一时间相识华为云新鲜技术~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 教你怎样搞定springboot集成kafka