1.概述
processingTimeTimersQueue 是一个优先级队列,首先查询顶端元素,顶端元素的时间作为下一次触发时间,将传入的时间作为timer加到队列中,传入时间小于顶端元素时间,将传入定时器作为下一个定时器传入processingTimeService,通过ScheduledThreadPoolExecutor调度下一次触发,实际上是基于调度线程池的一个基础定时调度场景。取系统当前时间和触发时间的时间差作为一个定时调度。
结论:基于processTime的timer本质上是一个系统的定时调度,不管后面来不来element,到schedule定时的点,就会触发triggerTask的run来实现目标的onProcessingTime调用
。
问题引入请参考:【Flink】Flink TimeServer 之 timerService().registerProcessingTimeTimer
测试类我是在flink 1.10源码中测试的,位置如下