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

探秘Kafka源码:关键内容解析

文章目录

  • 一、以kafka-3.0.0为例
    • 1.1安装 gradle
  • 二、生产者源码
    • 2.1源码主流程图
    • 2.2 初始化
    • 2.3生产者sender线程初始化
    • 2.4 程序入口
    • 2.5生产者 main 线程初始化
    • 2.6 跳转到 KafkaProducer构造方法

一、以kafka-3.0.0为例

打开 IDEA,点击 File->Open…->源码包解压的位置。
在这里插入图片描述

1.1安装 gradle

Gradle是类似于 maven 的代码管理工具。Kafka基于它编译。

IDEA 自动帮你下载安装,下载的时间比较长(网络慢,需要 1 天时间,有 VPN 需要几分钟)。

二、生产者源码

2.1源码主流程图

在这里插入图片描述

2.2 初始化

在这里插入图片描述

2.3生产者sender线程初始化

在这里插入图片描述

2.4 程序入口

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.StringSerializer;
import java.util.Properties;
public class CustomProducer {
	public static void main(String[] args) {
	// 0 配置
	Properties properties = new Properties();
	// 连接集群 bootstrap.servers
	properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"hadoop102
	:9092,hadoop103:9092");
	// 指定对应的 key 和 value 的序列化类型 key.serializer
	properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
	StringSerializer.class.getName());
	properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,Strin
	gSerializer.class.getName());
	// 1 创建 kafka 生产者对象
	// "" hello
	KafkaProducer<String,  String>  kafkaProducer  =  new
	KafkaProducer<>(properties);
	// 2 发送数据
	for (int i = 0; i < 5; i++) {
	kafkaProducer.send(new
	ProducerRecord<>("first","atguigu"+i));
	}
	// 3 关闭资源
	kafkaProducer.close();
	}
}

2.5生产者 main 线程初始化

点击 main()方法中的 KafkaProducer()。
在这里插入图片描述

2.6 跳转到 KafkaProducer构造方法

在这里插入图片描述


http://www.kler.cn/a/461538.html

相关文章:

  • 设计模式 创建型 原型模式(Prototype Pattern)与 常见技术框架应用 解析
  • Flash Attention V3使用
  • Ansys Discovery 中的网格划分方法:探索模式
  • word文档中的文档网格——解决相同行间距当显示出不同行间距的情况
  • UnityRenderStreaming使用记录(三)
  • python实现自动登录12306抢票 -- selenium
  • 【Leetcode 热题 100】22. 括号生成
  • 设计模式-创建型模式-工厂模式
  • 【Git_bugs】remote error GH013 Repository rule violations found for.md
  • 【网络】什么是路由协议(Routing Protocols)?常见的路由协议包括RIP、OSPF、EIGRP和BGP
  • ESP8266+STM32+阿里云保姆级教程(AT指令+MQTT)
  • 随笔 | 写在2024的最后一天
  • 线程锁和协程锁的区别
  • Redis Stream:实时数据处理的高效解决方案
  • 2分钟知晓Vscode 插件发布流程
  • 【Rust自学】8.6. HashMap Pt.2:更新HashMap
  • 智能运维分析决策系统:构建高效运维的新篇章
  • 自动化与人工结合:如何平衡效率与风险?
  • 监控 Docker 注册表
  • 基于 Slf4j 和 AOP 的自动化方法执行时间日志记录方案
  • python-Flask:SQLite数据库路径不正确但是成功访问到了数据库,并对表进行了操作
  • QT----------常用界面组件的使用
  • 2024 AI产品经理在大模型的探索与实践(附学习资料下载)
  • 低空经济迅猛发展,无人机服务拔得头筹
  • 2021-04-14 输入一个数,判断奇偶性,若是奇数乘以2,若是偶数除2,得到结果若是三位数则反序,否则输出计算结果
  • Java 溯本求源之基础(三十三)——接口