背景
这几天看到Flink学习群问了一个问题,就是他们想实时监控用户session行为轨迹,如果当前session下用户点击了A事件,1小时内用户没有点击B事件,实时流输出C事件
拿电商页面举例子
Flink相关知识点
1:flink状态,由于按session聚合,需要使用keyby+process函数
2:通过flink的KeyedProcessFunction内部实现状态管理
3:然后运用KeyedProcessFunction中的定时触发器onTimer,实时定时判断
注意点:
TimerService 在内部维护两种类型的定时器(处理时间和事件时间定时器)并排队
执行。TimerService 会删除每个键和时间戳重复的定时器,即每个键在每个时间戳
上最多有一个定时器。如果为同一时间戳注册了多个定时器,则只会调用一次
onTimer()方法。
废话不多说,直接上代码
kafka代码:
import java.util.Properties
import kafka.producer.{KeyedMessage, Producer, ProducerConfig}
import scala.io.Source
object kafkaProduct {
def test1()