Kafka 下载安装及使用总结

server/2024/9/22 14:57:27/

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.ppmy.cn/server/120326.html

相关文章

OpenMV与STM32之间的通信

OpenMV与STM32之间的通信是嵌入式系统开发中常见的应用场景&#xff0c;尤其在需要结合机器视觉和复杂逻辑控制的系统中。OpenMV是一款开源的机器视觉模块&#xff0c;它基于MicroPython&#xff0c;具有图像采集和处理能力&#xff1b;而STM32则是一款功能强大的单片机&#x…

SpringCloud Gateway笔记整理

actuator配置, 访问http://localhost:9999/actuator/gateway/routes查看路由信息management.endpoint.gateway.enabledtrue management.endpoints.web.exposure.includegatewaylogger配置logging.level.org.springframework.cloud.gatewaytrace logging.level.org.springframew…

PostgreSQL常用表操作SQL脚本整理

标题 查看 PostgreSQL表字段信息包括 名称&#xff0c;数据类型&#xff0c;精度&#xff0c;注释等信息查看数据库中的 schemas查看特定 schema 中的所有表查看指定表所有列的信息&#xff1a;查看主键信息&#xff1a;查看索引信息&#xff1a; 创建库表模板修改表信息修改表…

IDEA 24.1 could not autowire. No beans of ‘***‘ type found. 取消 某个类型的 警告

一.问题描述 Idea的spring中&#xff0c;经常会遇到Could not autowire. No beans of xxxx type found的错误提示。但程序的编译和运行都是没有问题的。爆红看着总让人难受。 二、解决问题 找到如上位置&#xff1a; 1、&#xff08;不推荐&#xff09;在file中找到如下位置&a…

Canvas简历编辑器-Monorepo+Rspack工程实践

Canvas简历编辑器-MonorepoRspack工程实践 在之前我们围绕Canvas聊了很多代码设计层面的东西&#xff0c;在这里我们聊一下工程实践。在之前的文中我也提到过&#xff0c;因为是本着学习的态度以及对技术的好奇心来做的&#xff0c;所以除了一些工具类的库例如 ArcoDesign、Re…

C# WPF 为何能成为工控上位机开发的首选

C# WPF&#xff08;Windows Presentation Foundation&#xff09;因其强大的功能和灵活性&#xff0c;成为了工控上位机开发的首选技术之一。WPF提供了丰富的控件、图形和动画效果&#xff0c;以及与硬件设备的交互能力&#xff0c;非常适合用来构建复杂的工业自动化和监控系统…

论文笔记:交替单模态适应的多模态表征学习

整理了CVPR2024 Multimodal Representation Learning by Alternating Unimodal Adaptation&#xff09;论文的阅读笔记 背景MLA框架实验Q1 与之前的方法相比&#xff0c;MLA能否克服模态懒惰并提高多模态学习性能?Q2 MLA在面临模式缺失的挑战时表现如何?Q3 所有模块是否可以有…

增强LinkedList实现瑞士轮赛制编排

前言 LinkedList底层虽然是基于链表实现&#xff0c;但是由于其对底层节点进行了封装&#xff0c;导致无法操作底层Node对象。这也为使用上带来了很多不便&#xff0c;比如我之前遇到的一个需求&#xff1a;将n个队伍按照瑞士轮进行编排&#xff0c;组成n/2个队伍&#xff0c;…