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 线程


  • 相关阅读:
    学习日报
    学习日报
    学习日报
    学习日报
    《人月神话》读后感(第一二章)
    线程
    for each
    类的访问属性
    异常
    输入输出流
  • 原文地址:https://www.cnblogs.com/userrain/p/7309292.html
Copyright © 2011-2022 走看看