最新文章

Kafka Java生产者模型

Kafka Java生产者模型

Producer初始化 初始化KafkaProducer实例,同时通过Config数据初始化MetaData、NetWorkClient、Accumulator和Sender线程。启动Sender线程。 MetaData信息 记录Cluster的相关信息,第一次链接使用Config设置,之后会从远端poll信息回来,比如host.name等信息。 Accumulator实例 Accumulator持有一个Map实例,key为TopicPartition(封装了topic和partition信息)对象,Value为RecordBatch的Deque集合。 NetworkClient实例 通过MetaData信息初始化NetworkClient实例,NetworkClient使用NIO模型。 Sender线程 sender持有NetworkClient和Accumulator实例,在Producer实例初始化完成之后,持续地将Accumulator中的Batch数据drain到一个List中,调用NetworkClient进行发送。 发送 调用Producer实例进行消息发送,首先将消息序列化之后追加到Accumulator的Deque的最后一个batch中,之后唤醒sender->client->Selector进行消息发送。