kafka源码分析(一)- KafkaProducer
Kafka自定义了一套网络协议,只要遵循这个标准,就能向kafka发送消息,也可以从kafka中拉取消息。kafka有多个版本的生产者实现。我们这篇文章讲述的是Java版本的消费者实现-KafkaProducer,能轻松实现同步、异步发送消息、批量发送、超时重发等复杂的功能。 1.KafkaProducer基本流程 基本流程如下: producerInterceptors对消息进行拦截 Serializer 对消息的key和value进行序列化 partitioner 为消息选择合适的partition RecordAccumulator收集消息,实现批量发送 Sender从RecordAccumulator 获取消息 构造ClientRequest 将ClientRequest交给NetworkClient,准备发送 NetworkClient将请求放入KafkaChannel的缓存 执行网络IO,发送请求 收到响应,调用ClientRequest的回调函数 调用RecordBatch的回调函数,最终调用每个消息上注册的回调函数 消息发送的过程,涉及两个线程的协同工作,主线程将业务数....