首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Flink 定时器的4个特性

这样之后,一旦到达定时器的指定时刻,就会调用 onTimer() 方法。 onTimer() 回调函数可能会在不同时间点被调用,这首先取决于使用处理时间还是事件时间来注册定时器。...特别是: 使用处理时间注册定时器时,当服务器的系统时间到达定时器的时间戳时,就会调用 onTimer() 方法。...使用事件时间注册定时器时,当算子的 Watermark 到达或超过定时器的时间戳时,就会调用 onTimer() 方法。...值得注意的是,onTimer() 和 processElement() 调用都是同步调用,因此同时在 onTimer() 和 processElement() 方法中访问状态以及进行修改都是安全的。...这意味着当为同一个 key 或时间戳注册多个定时器时,onTimer() 方法只会调用一次。

2K30

理解ProcessFunction的Timer逻辑

核心代码如下图: 建议您先把上述官方代码看一遍,这样再看过下面几个关键点,就能熟练使用此定时器了; 定时器的几个关键点 下图红框中的registerEventTimeTimer方法只要执行了,则蓝框中的onTimer...onTime方法执行时,timestamp的值是之前registerEventTimeTimer的入参: 最后一点也是最关键的一点:每次执行processElement都会修改state,所以,每次onTimer...执行的时候,拿到的state都是最近一次processElement中写入的值,因此,假设processElement执行10次,onTimer也会执行10次,但下图红框中的判断只有最后一次等于ture...举例说明 第一次执行processElement,时间是12:01:01,因此state中记录的是12:01:01,registerEventTimeTimer入参就是12:11:01(这就是第一个onTimer...的timestamp入参) 第一个onTimer执行,timestamp是12:11:01,取得state是12:01:05,因此timestamp == result.lastModified +

36920

Flink深入之:理解ProcessFunction的Timer逻辑

在这里插入图片描述] 建议您先把上述官方代码看一遍,这样再看过下面几个关键点,就能熟练使用此定时器了; 定时器的几个关键点 下图红框中的registerEventTimeTimer方法只要执行了,则蓝框中的onTimer...,timestamp的值是之前registerEventTimeTimer的入参: [在这里插入图片描述] 最后一点也是最关键的一点:每次执行processElement都会修改state,所以,每次onTimer...执行的时候,拿到的state都是最近一次processElement中写入的值,因此,假设processElement执行10次,onTimer也会执行10次,但下图红框中的判断只有最后一次等于ture...举例说明 第一次执行processElement,时间是12:01:01,因此state中记录的是12:01:01,registerEventTimeTimer入参就是12:11:01(这就是第一个onTimer...的timestamp入参) 第一个onTimer执行,timestamp是12:11:01,取得state是12:01:05,因此timestamp == result.lastModified + 60000

1.9K00

链式操作的用法reject的用法catch的用法all的用法race的用法

链式操作的用法 所以,从表面上看,Promise只是能够简化层层回调的写法,而实质上,Promise的精髓是“状态”,用维护状态、传递状态的方式来使得回调函数能够及时调用,它比传递callback函数要简单...reject的用法 到这里,你应该对“Promise是什么玩意”有了最基本的了解。那么我们接着来看看ES6的Promise还有哪些功能。我们光用了resolve,还没用reject呢,它是做什么的呢?...catch的用法 我们知道Promise对象除了then方法,还有一个catch方法,它是做什么用的呢?...all的用法 Promise的all方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后才执行回调。...race的用法 all方法的效果实际上是「谁跑的慢,以谁为准执行回调」,那么相对的就有另一个方法「谁跑的快,以谁为准执行回调」,这就是race方法,这个词本来就是赛跑的意思。

4.3K20

聊聊flink的ProcessFunction

ctx.timerService().registerEventTimeTimer(current.lastModified + 60000); } ​ @Override public void onTimer...processElement方法里头会更新该ValueState,用于记录每个key的element个数以及最后访问时间,然后注册一个EventTimeTimer,在当前eventTime时间的60秒后到达 onTimer...abstract void processElement(I value, Context ctx, Collector out) throws Exception; ​ public void onTimer...里头有三个抽象方法,分别是timestamp、timerService、output;OnTimerContext继承了Context,它定义了timeDomain方法 ProcessFunction还定义了onTimer...里头有三个抽象方法,分别是timestamp、timerService、output;OnTimerContext继承了Context,它定义了timeDomain方法;ProcessFunction还定义了onTimer

1.9K10

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券