newConnections

每当Processor线程接收新连接请求,都会将对应SocketChannel放入该队列。
之后调用configureNewConnections创建连接时,就从该队列中取出SocketChannel,然后注册新连接。
inflightResponses
- 临时Response队列
-
Kafka是如何应用NIO实现网络通信的?(下) -
为何是临时?
有些Response回调逻辑要在Response被返回发送方后,才能执行,因此需要暂存临时队列。
responseQueue
每个Processor线程都会维护自己的Response队列,
而非像网上的某些文章说Response队列是线程共享的或是保存在RequestChannel中的。Response队列里面保存着需要被返还给发送方的所有Response对象。
工作逻辑
configureNewConnections
- 负责处理新连接请求,注意每个Processor线程都维护着一个Selector类实例。
-
Kafka是如何应用NIO实现网络通信的?(下)
processNewResponses
- 负责发送Response给Request发送方,并且将Response放入临时Response队列
-
Kafka是如何应用NIO实现网络通信的?(下)
poll
processCompletedReceives
- 接收和处理Request
-
Kafka是如何应用NIO实现网络通信的?(下)
processCompletedSends
processDisconnected
closeExcessConnections
- 关闭超限连接
-
Kafka是如何应用NIO实现网络通信的?(下)