Flink 实现指定时长或消息条数的触发器
Flink 中窗口是很重要的一个功能,而窗口又经常配合触发器一起使用。 Flink 自带的触发器大概有: CountTrigger: 指定条数触发 ContinuousEventTimeTrigger:指定事件时间触发 ContinuousProcessingTimeTrigger:指定处理时间触发 ProcessingTimeTrigger: 默认触发器,窗口结束触发 EventTimeTrigger: 默认处理时间触发器,窗口结束触发 NeverTrigger:全局窗口触发器,不触发 但是没有可以指定 时间和条数一起作为触发条件的触发器 ,所有就自己实现了一个(参考:ProcessingTimeTrigger、CountTrigger) 先看下测试数据生成代码,有个判断语句,随机睡眠一定时间,控制条数和时间触发器的都可以触发 while (true) { val map = Map("id" -> i, "createTime" -> getCreateTime(), "amt" -> (MathUtil.random.nextInt(10) + "." + MathUtil.random.nextInt(10))) val jsonObject: JSONObject = new JSONObject(map) println(jsonObject.toString()) /