Handler线程会取出Processor线程,放人RequestChannel的请求进行处理,并将产生的响应通过RequestChannel传递给Processor线程。
Handler线程属于Kafka的API层,Handler线程对请求的处理通过调用KafkaApis中的方法实现。
KafkaRequestHandler
KafkaRequestHandler的主要职责是从RequestChannel获取请求并调用KafkaApis.handle方法处理请求。
API层使用KafkaRequestHandlerPool来管理所有的KafkaRequestHandler线程,KafkaRequestHandlerPool是一个简易版的线程池,其中创建了多个KafkaRequestHandler线程。
KafkaApis
KafkaApis是Kafka服务器处理请求的入口类。它负责将KafkaRequestHandler传递过来的请求分发到不同的handl*处理方法中,分发的依据是RequestChannel.Request中的requestld,此字段保存了请求的ApiKeys的值,不同的ApiKeys值表示不同请求的类型。