kafak+zookeeper在windows安装,并在springboot项目中使用教程

环境:jdk,maven,idea

大致分为四个步骤:

  • 1.安装zookeeper
  • 2.安装Kafka
  • 3.安装kafka tool(kafka可视化工具)
  • 4.在springboot中使用Kafka

一、安装zookeeper(资源协调,分配管理)

  • 1、下载安装文件:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/
    在这里插入图片描述

  • 2、下载完成后,解压到一个目录:D:\zookeeper\zookeeper-3.4.10

  • 3、conf目录下zoo_sample.cfg重命名为zoo.cfg

  • 4、进入文件夹管理员身份运行zkServer.cmd
    在这里插入图片描述

  • 5、再打开一个cmd窗口运行 zkCli.cmd
    在这里插入图片描述
    zookeeper安装并启动成功。

二、安装Kafka

  • 1、 下载安装包 http://kafka.apache.org/downloads
    注意要下载二进制版本
    在这里插入图片描述

  • 2、 解压并进入Kafka目录,我的文件夹:D:\kafka\kafka_2.12-2.6.0

  • 3、 进入config目录找到文件server.properties并打开

  • 4、 找到并编辑log.dirs=D:\data\kafka-logs

  • 5、 找到并编辑zookeeper.connect=localhost:2181

  • 6、 Kafka会按照默认,在9092端口上运行,并连接zookeeper的默认端口:2181

  • 7、 进入Kafka安装目录D:\kafka\kafka_2.12-2.6.0,按下Shift+右键,选择“打开命令窗口”选项,打开命令行,输入

.\bin\windows\kafka-server-start.bat .\config\server.properties
在这里插入图片描述

  • 不要关了这个窗口,启用Kafka前请确保ZooKeeper实例已经准备好并开始运行

三、安装kafka可视化工具kafka tool

  • 1、下载安装包 http://www.kafkatool.com/download.html
    在这里插入图片描述
  • 2、双击下载完成的exe图标,傻瓜式完成安装。
    在这里插入图片描述
  • 3、打开kafka tool,提示设置kafka集群连接,点击确定
    在这里插入图片描述
  • 4、设置 kafka的版本(默认就可以), zookeeper的地址和端口
    在这里插入图片描述
  • 5、设置kafka的地址
    在这里插入图片描述
  • 6、设置完了,点击Test测试是否能连接,连接通了,然后点击Add。
    在这里插入图片描述
  • 7、添加完成后出现如下界面
    在这里插入图片描述
  • 8、简单使用
  • 配置以字符串的形式显示kafka消息体
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 或者通过如下界面配置
    在这里插入图片描述
  • 注释:更改完Content Types,要点击Update和Refresh按钮
    再次查看kafka的数据:
    在这里插入图片描述

四、在springboot中使用Kafka

  • 1、新建一个springboot项目在这里插入图片描述
  • 2、pom引入jar依赖:
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--kafka-->
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
        </dependency>
  • 3、配置文件配置
#kafka配置地址 多个以 , 分割
spring.kafka.bootstrap-servers=127.0.0.1:9092
#生产者的序列化
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
#消费者的分组
spring.kafka.consumer.group-id=default_consumer_group
spring.kafka.consumer.enable-auto-commit=true
spring.kafka.consumer.auto-commit-interval=1000
#消费者的序列化
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
  • 4、启动类
    在这里插入图片描述
  • 5、生产者的代码实现
package com.kafak.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ProducerController {

    @Autowired
    private KafkaTemplate<String,Object> kafkaTemplate;

    @RequestMapping(value = "/message/send/{msg}",method = RequestMethod.GET)
    public String send(@PathVariable String msg){
        kafkaTemplate.send("demo","shus1", msg); //使用kafka模板发送信息
        return "success";
    }
}

  • 6、消费者的代码实现
package com.kafak.consumer;

import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;

/**
 * @author shiziyang
 * 监听服务器上的kafka是否有相关的消息发过来
 * @date by 2020/11
 */
@Component
public class ConsumerDemo {
    /**
     * 定义此消费者接收topics = "demo"的消息,与controller中的topic对应上即可
     *
     * @param record 变量代表消息本身,可以通过ConsumerRecord<?,?>类型的record变量来打印接收的消息的各种信息
     */
    @KafkaListener(topics = "demo")
    public void listen(ConsumerRecord<?, ?> record) {
        System.out.printf("kafakDemo -> topic is %s, offset is %d, key is %s, value is %s \n", record.topic(), record.offset(), record.key(), record.value());
    }
}

  • 7、启动项目,postman请求生产者。生产者发消息到kafak,消费者会接受到消息。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酸菜鱼(szy)

如果给您提供帮助的话可以打赏哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值