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

Kafka 入门到起飞 - 生产者发送消息流程解析

在这里插入图片描述

  1. 生产者通过send()方法发送消息
  2. 消息会经过拦截器->序列化器->分区器 进行加工
  3. 然后将消息存在缓冲区
  4. 当缓冲区中消息达到条件会按批次发送到broker对应分区上
  5. broker将接收到的消息进行刷盘持久化
  6. 消息处理broker会返回给producer响应
  7. 落盘成功
  8. 返回元数据信息 - > 生产者继续发送后面消息
  9. 落盘失败 - 生产者设置了重试次数
  10. 生产者去缓冲区重试发送

Tip:

  • Producer 创建时,会创建一个Sender线程设置为守护线程

  • Producer 创建时,会创建缓冲区

  • Producer 生产消息,内部是一个异步流程

  • RecordAccumulator(缓冲区) 对每一个分区都有一个缓冲区

    • 每个分区的缓冲区中消息也是有序的
    • 可以指定缓冲区中的消息按批次发送
      • 缓冲区大小达到batch.size
      • lingger.ms 达到上限
      • 以上两个条件满足一个即发送一批
    • 可以指定整个缓冲区的大小

批次的概念很好理解,缓冲区就像一辆公交车,有两种发车方式,一是人满了就发车,一是等5分钟就发车,不管是人满了还是到5分钟了,发车,go~

  • 一个批次消息发送后,通过网络,发往Kafka指定分区,然后刷盘到broker
  • 如果Producer设置了retries参数值>0,那么允许消息发送失败进行重试,重试机制由客户端Producer内部实现
  • Broker端消息落盘成功,会返回元数据给生产者
    • 通过阻塞直接返回 (同步发送)
    • 通过回调函数返回(异步发送)
http://www.lryc.cn/news/95072.html

相关文章:

  • 基于单片机智能台灯坐姿矫正器视力保护器的设计与实现
  • 欧姆龙以太网模块如何设置ip连接 Kepware opc步骤
  • PLEX如何搭建个人局域网的视频网站
  • java学习02
  • libcurl库使用实例
  • 大数据存储架构详解:数据仓库、数据集市、数据湖、数据网格、湖仓一体
  • ESP32(MicroPython) 网页控制五自由度机械臂
  • 前端笔记_OAuth规则机制下实现个人站点接入qq三方登录
  • huggingface新作品:快速和简便的训练模型
  • 利用鸿鹄优化共享储能的SCADA 系统功能,赋能用户数据自助分析
  • noSQL语句练习
  • Spring:Bean生命周期
  • Vue自定义指令
  • SpringBoot+JWT实现单点登录解决方案
  • 中国国债发行数据集(2002-2023)
  • 曲师大2023大一新生排位赛-C.String题解
  • Linux Ubuntu安装RabbitMQ服务
  • 什么是测试用例?如何设计?
  • Maven —— 项目管理工具
  • Ubuntu 命令行编辑文件后如何保存退出
  • AHB协议理解
  • 【UE5 多人联机教程】01-创建主界面
  • HarmonyOS学习路之方舟开发框架—学习ArkTS语言(基本语法 五)
  • React(3)
  • LangChain大型语言模型(LLM)应用开发(三):Chains
  • FPGA——点亮led灯
  • idea创建spark教程
  • 【JavaEE】DI与DL的介绍-Spring项目的创建-Bean对象的存储与获取
  • C#图片处理
  • php 开发微信 h5 支付 APIv3 接入超详细流程