Flink定时器怎么实现
发表于:2025-02-13 作者:千家信息网编辑
千家信息网最后更新 2025年02月13日,这篇文章主要讲解了"Flink定时器怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Flink定时器怎么实现"吧!背景需求在电商领域会有这么一个
千家信息网最后更新 2025年02月13日Flink定时器怎么实现背景需求
定时处理逻辑
这篇文章主要讲解了"Flink定时器怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Flink定时器怎么实现"吧!
背景需求
在电商领域会有这么一个场景,如果用户买了商品,在订单完成之后,24小时之内没有做出评价,系统自动给与五星好评,我们今天主要使用flink的定时器来简单实现这一功能。
案例详解
自定义source
首先我们还是通过自定义source来模拟生成一些订单数据.
在这里,我们生了一个最简单的二元组Tuple2,包含订单id和订单完成时间两个字段.
public static class MySource implements SourceFunction>{
private volatile boolean isRunning = true;
@Override
public void run(SourceContext> ctx) throws Exception{
while (isRunning){
Thread.sleep(1000);
//订单id
String orderid = UUID.randomUUID().toString();
//订单完成时间
long orderFinishTime = System.currentTimeMillis();
ctx.collect(Tuple2.of(orderid, orderFinishTime));
}
}
@Override
public void cancel(){
isRunning = false;
}
}
定时处理逻辑
先上代码, 我们再来依次解释代码
public static class TimerProcessFuntion
extends KeyedProcessFunction,Object>{
private MapState mapState;
//超过多长时间(interval,单位:毫秒) 没有评价,则自动五星好评
private long interval = 0l;
public TimerProcessFuntion(long interval){
this.interval = interval;
}
@Override
public void open(Configuration parameters){
MapStateDescriptor mapStateDesc = new MapStateDescriptor<>(
"mapStateDesc",
String.class, Long.class);
mapState = getRuntimeContext().getMapState(mapStateDesc);
}
@Override
public void onTimer(
long timestamp, OnTimerContext ctx, Collector
首先我们定义一个MapState类型的状态,key是订单号,value是订单完成时间 在processElement处理数据的时候,把每个订单的信息存入状态中,这个时候不做任何处理,并且注册一个比订单完成时间大于间隔时间(interval)的定时器. 注册的定时任务在到达了定时器的时间就会触发onTimer方法,我们主要在这个里面进行处理。我们调用外部的接口来判断用户是否做过评价,如果没做评价,调用接口给与五星好评,如果做过评价,则什么也不处理,最后记得把相应的订单从MapState删除
感谢各位的阅读,以上就是"Flink定时器怎么实现"的内容了,经过本文的学习后,相信大家对Flink定时器怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
订单
评价
时间
定时器
五星
处理
好评
接口
用户
学习
内容
数据
时候
状态
系统
上代
两个
代码
任务
功能
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
cbol引物数据库
软件开发质量控制 专项证书
江苏省网络安全管理技能大赛
数据库中使用锁的语句
软件开发团队周例会
空间说说怎样在服务器之间传递
加强网络安全意识总体思路
软件开发定制行业
软件开发 alpha 指
加强网络安全意识报道
软件开发行业总产值怎么算
管理上网的服务器
cad许可管理器服务器名称
软件开发需求什么意思
计算机软件开发学习多少钱
服务器中心文件管理器
调用数据库代码
数据库交接应用不交接
2020中国网络安全年会召开
云服务器安装数据库慢
通达信更新数据库
光猫isp服务器连接不到地址
数据库原理及应用教程课本第三章
深圳嘉华学校软件开发
以色列中国网络安全建设
镇魔曲手游服务器列表
网络安全管理的基本任务
敏捷软件开发的准则
uos检查代理服务器和防火墙
sql数据库本地存放目录打不开