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


  • 相关阅读:
    微软小娜APP的案例分析
    嵌入式第12次实验
    嵌入式第11次实验
    嵌入式第10次实验报告
    嵌入式第9次实验
    软工 小组作业(第二次)
    嵌入式软件设计第8次实验报告-140201236-沈樟伟
    5月17下
    5月17上
    5月15上午
  • 原文地址:https://www.cnblogs.com/userrain/p/7309292.html
Copyright © 2011-2022 走看看