windows环境下 springboot 集成kafka(详细篇)

21 篇文章 0 订阅
1 篇文章 0 订阅

一、配置zookeeper

(使用外部zookeeper,如果使用kafka自带的直接看二)

1.首先kafka是干什么的,大家可以自行百度,原理等等,不在这里赘述

2.kafka的运行需要zookeeper提供环境,所以首先去apache下载zookeeper

下载地址为https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/    选择某个版本后记得下载带bin的那个包

这里举例为

如果下载的不是bin的而是第二个,则执行zkserver命令的时候会报错(大家可以尝试一下)

3.下载完成后解压然后将config目录下的zoo_sample.cfg复制一份在当前路径命名为zoo.cfg或者直接将zoo_sample.cfg改为zoo.cfg

然后编辑zoo.cfg将其中的dataDir改为dataDir=D:\\aa\\apache-zookeeper-3.5.6-bin\\data   路径大家自行指定

4.然后配置zookeeper环境变量,首先在系统环境变量中添加ZOOKEEPER_HOME  值为zookeeper的根路径 我这里是D:\aa\apache-zookeeper-3.5.6-bin

5.然后在环境变量中找到path并编辑在最后追加;%ZOOKEEPER_HOME%\bin;

6.然后大家可以直接cmd调出命令行 执行zkserver即可成功启动 zookeeper

二、配置kafka(附加使用自带zookeeper)

1.首先去官网下载kafka,下载地址为 http://kafka.apache.org/downloads,记得选择scala这个子选项下的任意一个都行,我这里选的是2.12

2.然后解压下载的压缩包,然后修改config目录下的server.properties 将log.dirs的值进行修改!一定要修改,如果用自带的路径,后面命令后会报集群属性异常,因为自带的路径是不确定的,这里我修改的为log.dirs=D:\\aa\\kafka_2.12\\temp\\kafka

3.修改config目录下的zookeeper.properties将datadir的值进行修改 这里我修改为dataDir=D:\\aa\\kafka_2.12\\temp\\zookeeper

4.然后进入bin\windows执行 zookeeper-server-start.bat  ../../config/zookeeper.properties将zookeeper启动

5.然后另开一个cmd命令窗口然后进入bin\windows 执行kafka-server-start.bat ../../config/server.properties将kafka启动

三、集成SpringBoot

首先要保证zookeeper服务和kafka服务已经启动,且两个命令行不能关闭!

这里我们演示的是在名为demo的topic下进行数据传输,因此必须先创建一个名为demo的topic

我们首先回到kafka的bin\windows下执行如下命令 创建名为demo的topic

kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic demo

然后通过如下命令查看是否创建成功

kafka-topics.bat --list --zookeeper localhost:2181

成功后开始操作SpringBoot

-------------------------------------------------------------------------------------------------

1.添加依赖

   <dependency>
          <groupId>org.springframework.kafka</groupId>
          <artifactId>spring-kafka</artifactId>
   </dependency>

2.修改SpringBoot配置 

server:
  port: 8888
spring:
  main:
    banner-mode: off
  kafka:
    bootstrap-servers: 127.0.0.1:9092 #指定kafka server的地址,集群配多个,中间,逗号隔开
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    consumer:
      group-id: default_consumer_group #群组ID
      enable-auto-commit: true
      auto-commit-interval: 1000
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer

3.创建生产者

@RestController
public class KafkaController {
    @Resource
    KafkaTemplate<String,Object> kafkaTemplate;

    @PostMapping("/postMessage")
    public ResponseEntity sendMessage(){
        User user = new User();
        user.setId(1).setNickName("深蓝梦境").setTelNumber("13811999999").setPassword("admin").setSex(SexEnum.MALE.value);
        kafkaTemplate.send("demo", JSONObject.toJSONString(user));
        return R.ok("发送成功");
    }
}

4.创建消费者

@Component
public class FirstConsumer {
    /**
     * 定义此消费者接收topics = "demo"的消息,与controller中的topic对应上即可
     * @param record 变量代表消息本身,可以通过ConsumerRecord<?,?>类型的record变量来打印接收的消息的各种信息
     */
    @KafkaListener(topics = "demo")
    public void userListener(ConsumerRecord<?,?> record){
        System.out.println(record.topic());
        System.out.println(record.offset());
        System.out.println(record.value());
    }

}

执行的结果

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值