>本文讲解如何用Flink监控“事件A发生后,事件B在规定时间内未发生”的场景,并提供了KeyedProcessFunction、CEP及SQL三种实现方案。 你这个需求本质上是 “监控某个事件(商品上架),在一段时间窗口(30分钟)内如果未发生另一个事件(下单),就触发告警”。 在 Flink 里比较典型的实现方式有两种:定时器(ProcessFunction/KeyedProcessFunction) 或者 CEP(复杂事件处理)。 --- ✅ 方案一:KeyedProcessFunction + 定时器(推荐) 思路: 1. 每当有 商品上架事件 到来时,注册一个 30分钟之后的定时器。 2. 如果在这30分钟内收到了 下单事件,就清除定时器,说明不需要告警。 3. 如果定时器触发时还没有下单,就输出一条告警。 示例代码(Scala/Pseudo-Java): 要点: 需要保证事件有 唯一的商品ID,所以要 。 这里用了 ProcessingTime(处理时间),如果是基于事件时间,还要结合 watermark。 --- ✅ 方案二:Flink CEP 用 CEP 表达“上...