DelayedTaskQueue
是在ConsumerNetworkClient類中使用,是Kafka自己實現的一個很重要的數據結構。
- 官方解釋:延時隊列,Tracks a set of tasks to be executed after a delay.
- 我的理解:從DelayedQueue中把請求拿出來發送出去(只有時間到了,Task才能從Queue中拿出來)。
與Java的
DelayQueue
有什么不同?DelayQueue
,無界的阻塞隊列,和普通的隊列不同的是:里面的元素只有時間過期了之后才能取出來,頭元素是已經過期的元素中最早過期的。如果沒有過期的元素,則poll方法返回null.但是size方法返回的所有的元素,包括過期的和沒有過期的。
1.內部數據結構
主要是:PriorityQueue
(支持排序的Queue)
TODO