kafka-clients源码分析二:producer发送消息架构

kafka-clients源码分析二:producer发送消息架构

1. ProducerIntercptor对消息进行拦截

2. Serialzer对key和value进行序列化

3. Partitioner对消息选择合适的分区

4. RecordAccumulator收集消息,实现批量发送

5. Sender从RecordAccumulator获取消息

6 构造ClientRequest

7 将ClientRequest交给Network,准备发送

8 Network将请求放入KafkaChannel的缓存

9 发送请求

10 收到响应,调用ClientRequest

11 调用RecordBatch的回调函数,最终调用到每一个消息上注册的回调函数

在这里主要涉及到两个线程:

主线程主要负责封装消息成ProducerRecord对象,之后调用send方法将消息放入RecordAccumulator中暂存

Sender线程负责将消息构造成请求,并从RecordAccumulator取出消息消息并批量发送

上一篇:学习记录04 --- 使用java连接redis数据库进行操作


下一篇:redis入门