在 KafkaServer 中,会将 SocketServer 的请求通道传给 Kafka 请求处理线程 KafkaRequestHandler 和 KafkaApis
- 请求通道就是处理器与请求处理线程和 KafkaApis 交换数据的地方
- 如果处理器往请求通道添加请求,请求处理器线程和 KafkaApis 都可以获取到请求通道中的请求
- 如果请求处理线程和 KafkaApis 往请求通达添加响应,处理器也可以从请求通道获取响应
- 处理器会将客户端发送的请求放到全局的请求队列(requestQueue)中,提供给请求处理线程获取,请求处理线程会将请求转发给 KafkaApis 处理,最后 KafkaApis 会将处理完的响应结果放到响应队列(responseQueue)中,供处理器获取后发送给客户端
// 请求通道会保存全局的请求队列和每个处理器对应的响应队列
class RequestChannel(val numProcessors: Int, val queueSize: Int) extends KafkaMetricsGroup {
private var responseListeners: List[(Int) => Unit] = Nil
def addResponseListener(onResponse: Int =>

最低0.47元/天 解锁文章
1640

被折叠的 条评论
为什么被折叠?



