【Springboot】整合kafka

目录

安装zookeeper

jdk安装

环境准备:CentOS7,jdk1.8

步骤如下:

  • 下载自己需要的版本

    这里使用的jdk1.8,获取链接如下

    链接:https://pan.baidu.com/s/1Bkvy0ChTVH0hrKkxiE4ZDg 提取码:1zws

  • 上传到安装目录并解压

    使用linux连接工具,将下载的JDK压缩包上传到要安装的目录下,这里使用的是windTerm,我是将压缩包上传到/usr/java目录下,解压命令如下

    xml 复制代码
    tar -zxvf jdk-8u152-linux-x64.tar.gz

    解压后目录下面多个文件夹

  • 配置环境变量

    xml 复制代码
    vim /etc/profile

    在文件最后面添加如下配置,JAVA_HOME是自己安装的目录,需要改为自己的目录

    xml 复制代码
    export JAVA_HOME=/usr/java/jdk1.8.0_152
    export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/    
    export PATH=$PATH:$JAVA_HOME/bin

    重新加载系统环境变量

    xml 复制代码
    source /etc/profile
  • 验证是否安装成功

    xml 复制代码
    java -version

    出现如下内容说明安装成功

zookeeper安装

  • 下载压缩包:

    官网地址:https://zookeeper.apache.org/releases.html

  • 上传到安装目录并解压

    我的是/usr/zookeeper,解压压缩包

  • 修改配置文件

    进入解压后的文件夹里面的conf目录下,该目录下有一个名zoo_sample.cfg文件,将该文件重新名为zoo.cfg,或者重新复制一份命名为zoo.cfg。使用vim命令打开zoo.cfg文件编辑,主要修改两个地方,data,log需要自己创建,我是直接在zookeeper安装目录下创建的

  • 启动zookeeper

    进入zookeeper安装目录下的bin目录

    进入bin目录如下

    启动zookeeper服务端:./zkServer.sh start

    查看启动状态:./zkServer.sh status

    启动zookeeper客户端

    xml 复制代码
    	[root@localhost bin]# ./zkCli.sh

安装kafka(非集群)

  • 首先是下载自己需要的压缩包
    官网下载地址:https://kafka.apache.org/downloads

  • 上传到安装目录并解压

    xml 复制代码
    tar -zxvf kafka压缩包名称
  • 修改kafka的server.properties配置文件
    进入解压后的文件能看到如下内容,server.properties配置文件在config目录下

    我这里是非集群,修改配置文件也比较简单,使用vi或者vim文本编辑命令打开server.properties文件,修改下面配置

    xml 复制代码
    #kafka服务器地址
    listeners=PLAINTEXT://10.3.1.156:9092 
    xml 复制代码
    #zk服务器地址,我这里zk跟kafka在一台虚拟机上
    zookeeper.connect=10.3.1.156:2181
    xml 复制代码
    log.dirs=/usr/kafka/kafka-logs

    非集群方法配置就完成了,下面就是启动kafka服务,进入kafka文件下的bin目录下,使用命令的方式体验消息发送和接收
    启动kafka

    xml 复制代码
    ./kafka-server-start.sh -daemon ../config/server.properties

    创建topic

    xml 复制代码
    ./kafka-topics.sh --bootstrap-server 10.3.1.156:9092 --create --topic test --replication-factor 1 --partitions 1

    查看topic

    xml 复制代码
    ./kafka-topics.sh --list --bootstrap-server 10.3.1.156:9092

    发消息

    xml 复制代码
    ./kafka-console-producer.sh --bootstrap-server 10.3.1.156:9092 --topic test

    接收消息

    xml 复制代码
    ./kafka-console-consumer.sh --bootstrap-server 10.3.1.156:9092 --topic test

    删除topic

    xml 复制代码
    ./kafka-topics.sh --bootstrap-server 10.3.1.156:9092 --delete --topic test

springboot项目整合配置

  • 新建的项目pom文件中导入kafka依赖

    xml 复制代码
    <dependency>
       <groupId>org.springframework.kafka</groupId>
       <artifactId>spring-kafka</artifactId>
    </dependency>
  • 配置文件添加kafka相关配置

    yaml 复制代码
    server:
      port: 8080
    spring:
      kafka:
        bootstrap-servers: 10.3.1.156:9092 #kafka服务地址
        producer: #生产者
          key-serializer: org.apache.kafka.common.serialization.StringSerializer
          value-serializer: org.apache.kafka.common.serialization.StringSerializer
        consumer: #消费者
          key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
          value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
          auto-offset-reset: earliest
  • 客户端发送消息

    java 复制代码
    @RestController
    public class KafkaProducerController {
    
        @Autowired
        private KafkaTemplate<String, String> kafkaTemplate;
    
        @GetMapping(value = "/sentMessage")
        public String sentMessage(@RequestParam("msg") String msg){
            kafkaTemplate.send("test", msg);
            return "发送成功";
        }
    }
  • 消费者接收消息

    java 复制代码
    @Component
    public class KafkaConsumerListener {
        @KafkaListener(topics = "test", groupId = "my-test-group")
        public void consumer(ConsumerRecord<String,String> record){
            System.out.println("接收到的消息:" + record.value());
        }
    }
相关推荐
SQL-First布道者4 小时前
持久层框架的评价标准:只有一个
java·spring boot·spring·tomcat·mybatis·spring jdbc
m0_587383004 小时前
智慧场馆解决方案实战指南:从系统架构到落地部署全解析
java·spring boot·架构·系统架构
凤山老林6 小时前
从 RestTemplate 到 HttpClient 5:Spring Boot HTTP 客户端性能调优与连接池治理
spring boot·后端·http
海兰6 小时前
【Kafka学习4】六大核心 API
学习·kafka·linq
晚染烟6 小时前
每日八股day27
spring boot
边境悍匪7 小时前
蜗牛学苑 Java 智能体学习 Day24|SpringBoot 整合 MyBatis、分层解耦思维导图复盘
java·数据库·spring boot·学习·mybatis
NJCloud7 小时前
ELK企业级日志分析平台(四)——基于 ELFK + Kafka 的日志采集与传输平台部署实践
linux·运维·分布式·elk·kafka
【赫兹威客】浩哥8 小时前
基于SpringBoot+Vue3的企业办公自动化OA系统|集成Activiti工作流引擎
spring boot·后端·课程设计
༄沐࿆风࿆࿆9 小时前
Spring Boot 3 + Vue 3 全栈外卖系统:RabbitMQ异步解耦、MySQL/Neo4j双引擎推建
vue.js·spring boot·java-rabbitmq
胸中有沟壑12 小时前
SpringBoot使用WebSocket
spring boot·后端·websocket