zoukankan      html  css  js  c++  java
  • kafka源码学习笔记

    KafkaProducer

    1.send方法

      kafkaProducer端由两部分组成,一个为RecordAccumulator,一个是Sender,Sender实现Runnable,是一个后台线程.

           用户调用producer发送消息是与RecordAccumulator进行交互.RecordAccumulator中的append方法负责将消息放入后台buffer中.具体操作为: 获得topic和partation获得一个双端队列,该队列内部节点为RecordBatch,RecordBatch表示一批消息.它内部会持有一个MemoryRecords,类似一个buffer.  若还有空间,则将消息放入buffer中.若没有空间,则创建一个新的RecordBatch,将消息放入并将改RecordBatch放入双端队列的尾部,最后将结果返回,该结果中包含了RecordBatch是否溢满的信息. 这里对溢满的判断是dq.size() > 1 || batch.records.isFull(),即双端队列含有大于1个的节点,说明上一个RecordBatch已经满了,或这当前的RecordBatch溢满.  KafkaProducer会对返回的结果进行检查,若发下溢满,则调用Sender的wakeUp进行发送. 

    明天学习sender 线程


  • 相关阅读:
    redis
    dom4j-1.6.1.jar与dom4j-1.4.jar
    runoob
    session失效后,登录页面嵌入iframe框架
    log4j.properties 详解与配置步骤
    maven+swagger
    Eclipse建立Maven项目后无法建立src/main/java资源文件夹
    vue 3.x 相对于 vue 2.x 的重大修改
    面试准备
    JS系列
  • 原文地址:https://www.cnblogs.com/userrain/p/7309292.html
Copyright © 2011-2022 走看看