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

探秘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.serversproperties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"hadoop102:9092,hadoop103:9092");// 指定对应的 key 和 value 的序列化类型 key.serializerproperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());// 1 创建 kafka 生产者对象// "" helloKafkaProducer<String,  String>  kafkaProducer  =  newKafkaProducer<>(properties);// 2 发送数据for (int i = 0; i < 5; i++) {kafkaProducer.send(newProducerRecord<>("first","atguigu"+i));}// 3 关闭资源kafkaProducer.close();}
}

2.5生产者 main 线程初始化

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

2.6 跳转到 KafkaProducer构造方法

在这里插入图片描述

http://www.lryc.cn/news/513394.html

相关文章:

  • Android音频效果处理:基于`android.media.audiofx`包的原理、架构与实现
  • LeetCode - 初级算法 数组(两个数组的交集 II)
  • SQL 实战:分页查询的多种方式对比与优化
  • 汇川Easy系列正弦信号发生器(ST源代码)
  • JavaSpring AI与阿里云通义大模型的集成使用Java Data Science Library(JDSL)进行数据处理
  • Three.js教程002:Three.js结合Vue进行开发
  • pycharm+anaconda创建项目
  • vue2中遇到的问题与解决方案(自用)
  • CF2043b-B. Digits
  • ultralytics库RT-DETR代码解析
  • (七)- plane/crtc/encoder/connector objects
  • 基于STM32的四轴飞行器的控制系统(论文+源码)
  • 混合精度训练(Mixed Precision Training)中为什么在训练过程中不直接使用bf16进行权重更新?中英双语
  • 【java】HashMap的实现原理
  • FCM32F103C8T6开发指引
  • Python世界:人生苦短,我用Python
  • 【从零开始入门unity游戏开发之——C#篇43】C#补充知识——值类型和引用类型汇总补充、变量的生命周期与性能优化、值类型和引用类型组合使用
  • 从论文到实践:Stable Diffusion模型一键生成高质量AI绘画
  • 项目管理:用甘特图 “导航” 项目全程
  • v3.0.8- 「S+会员」新增专属运动秀,试试新穿搭吧- 与「好友」
  • 9-Gin 中自定义 Model --[Gin 框架入门精讲与实战案例]
  • 【VBA】EXCEL - VBA 创建 Sheet 表的 6 种方法,以及注意事项
  • 数据库中,group by 和partition by:数据分组和数据分区的区别
  • 【linux学习指南】Ext系列文件系统(四)路径分区链接
  • 深度学习中的参数初始化
  • wpf 基于Behavior库 的行为模块
  • 【每日学点鸿蒙知识】导入cardEmulation、自定义装饰器、CallState状态码顺序、kv配置、签名文件配置
  • 【SpringMVC】REST 风格
  • IDEA修改编译版本
  • SkyWalking Agent 配置 Spring Cloud Gateway 插件解决日志错误