当前位置: 首页 > news >正文

Kafka 下载安装及使用总结

1. 下载安装

官网下载地址:Apache Kafka

下载对应的文件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上传到服务器上,解压

tar -xzf kafka_2.13-3.7.0.tgz

目录结果如下

├── bin
│   └── windows
├── config
│   └── kraft
├── libs
├── licenses
└── site-docs

官方文档:Apache Kafka

kafka 有两种启动方式,ZooKeeper 和 KRaft,这里采用 KRaft 的方式,使用 kraft 目录下的配置文件

config
├── connect-console-sink.properties
├── connect-console-source.properties
├── connect-distributed.properties
├── connect-file-sink.properties
├── connect-file-source.properties
├── connect-log4j.properties
├── connect-mirror-maker.properties
├── connect-standalone.properties
├── consumer.properties
├── kraft
│   ├── broker.properties
│   ├── controller.properties
│   └── server.properties
├── log4j.properties
├── producer.properties
├── server.properties
├── tools-log4j.properties
├── trogdor.conf
└── zookeeper.properties

修改 server.properties 文件

  • process.roles:KRaft 模式角色
    • broker
    • controller
    • broker,controller
  • node.id:节点 ID,需要为每个节点分配一个唯一的 ID
  • controller.quorum.voters:Controller 的投票者配置
  • log.dirs:日志目录

初始化集群,先生成一个 UUID

./bin/kafka-storage.sh random-uuid

再执行命令,使用生成的 UUID 完成集群初始化

./bin/kafka-storage.sh format -t thCDFveGRleJro7zTaOOGA -c ./config/kraft/server.properties

然后启动 Kafka

./bin/kafka-server-start.sh -daemon ./config/kraft/server.properties

2. Spring Boot 集成

2.1 引入依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>3.1.4</version><exclusions><exclusion><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.7.0</version></dependency>
</dependencies>

2.2 配置文件

spring:kafka:bootstrap-servers: 127.0.0.1:9092consumer:group-id: fable-group

2.3 生产者

使用 KafkaTemplate 实现消息的生产

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ProducerController {private final KafkaTemplate<String, String> kafkaTemplate;@Autowiredpublic ProducerController(KafkaTemplate<String, String> kafkaTemplate) {this.kafkaTemplate = kafkaTemplate;}@GetMapping("/send/message")public String sendMessage() {kafkaTemplate.send("test", "Hello, Kafka!");return "Message sent successfully";}
}

2.4 消费者

添加 @KafkaListener 注解,监听消息

import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Service;@Service
public class ConsumerService {@KafkaListener(topics = "test", groupId = "fable-group")public void listen(ConsumerRecord<String, String> consumerRecord) {System.out.println("Received message: " + consumerRecord.value());}
}

2.5 启动类

添加 @EnableKafka 注解

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.kafka.annotation.EnableKafka;@SpringBootApplication
@EnableKafka
public class FableApplication {public static void main(String[] args) {SpringApplication.run(FableApplication.class, args);}
}

2.6 测试

访问 /send/message 接口,可以看到控制台打印出接收到的消息

Received message: Hello, Kafka!
http://www.lryc.cn/news/443432.html

相关文章:

  • python实现多个pdf文件合并
  • 2409js,学习js2
  • SpellBERT: A Lightweight Pretrained Model for Chinese Spelling Check(EMNLP2021)
  • 【机器学习】--- 决策树与随机森林
  • [SAP ABAP] 创建域
  • STM32 通过 SPI 驱动 W25Q128
  • C#进阶-基于雪花算法的订单号设计与实现
  • 低版本SqlSugar的where条件中使用可空类型报语法错误
  • 跨游戏引擎的H5渲染解决方案(腾讯)
  • docker构建java镜像,运行镜像出现日志 no main manifest attribute, in /xxx.jar
  • react + antDesignPro 企业微信扫码登录
  • Go-知识-定时器
  • 【alluxio编译报错】Some files do not have the expected license header
  • 基于SpringBoot+Vue的商城积分系统
  • docker-compose up 报错:KeyError: ‘ContainerConfig‘
  • 股票行情接口,量化金融交易在未来会被广泛应用吗
  • [SDX35+WCN6856]SDX35 开启class/gpio子系统配置操作说明
  • react:React Hook函数
  • 算法学习2
  • vue循环渲染动态展示内容案例(“更多”按钮功能)
  • 好用的工具网址
  • 【Temporal】方法规范
  • Python实现图形学曲线和曲面的Bezier曲线算法
  • Unity数据持久化4——2进制
  • 经典sql题(八)SQL 查询详细指南总结一
  • 用Python实现时间序列模型实战——Day 30: 学习总结与未来规划
  • ChatGPT居然主动勾引用户,OpenAI又测试新功能? 一文教你学会订阅
  • 基于SpringBoot+Vue的考研百科网站系统
  • 深度之眼(三十)——pytorch(一)--深入浅出pytorch(附安装流程)
  • 麒麟银河桌面版,成功安装cuda12.6,mysql