求友们帮助, Java 到期提醒功能如何开发

336 天前
 Allenxup

现在是有个车辆信息表,表里有年检到期日期 inspection_date 和保险到期日期 insurance_date 字段,现在的需求是对这些时间进行监控剩余 15 天有效期进行消息提醒,推送通知给驾驶人员。想问下这场景应该怎么做?感谢

2881 次点击
所在节点    程序员
32 条回复
lsk569937453
336 天前
每天定时任务扫描一下呗。
buchikoma
336 天前
起一个永驻的后台进程,在设置 inspection_date 和 insurance_date 的时候,分别计算 Duration (多久秒之后到期),去后台进程注册这个任务并在 Duration 时间之后发送一条 message 给前台进程做推送,Duration 可以理解为一个 timeout
v2eb
336 天前
Timer 就好了, 项目启动时候扫一下当天的, 定时任务每天扫, 扫出来用 Timer 处理
simonlu9
336 天前
redis 延时队列
me1onsoda
336 天前
延迟队列
Allenxup
336 天前
@buchikoma 感谢解答。java 永驻的后台进程有什么实现方式嘛
brader
336 天前
@simonlu9
@me1onsoda 延迟不太好吧,还是存表里,每天定时查询需要发送的信息好点。你存延时的话,他这种车辆年检,从录入到年检可能 6 年,这延时队列越堆越恐怖
xwayway
336 天前
这不就是一个定时任务,每天扫一遍就行了的事么。延迟队列瞎 JB 扯淡,为了用中间件而用。
Allenxup
336 天前
@simonlu9 放延时队列的话,如果我到期日期更新了要怎么处理呢
Allenxup
336 天前
@brader 是的,我也是考虑到这一点。我这边还要驾驶证的到期提醒需求
buchikoma
336 天前
@Allenxup #6 没用过 java ,但比较简单且通用的就是起一个 Supervisor 去监控进程,或者用 actor 这种模型
brader
336 天前
@Allenxup 我以前做过类似的需求,通知表字段就记录一些标识、内容、通知时间之类的,每天在白天多少点发通知。我们做白天的话,一是不会打扰用户,二是我们接入的是厂商通知栏推送,有些厂商晚上是不允许你推送的
blackmirror
336 天前
这不最简单的功能了,定时跑不就完了,还真要造火箭 啊
luomao
336 天前
创建一个 Bean 然后写你的方法
@Scheduled(cron = "0 0 9 * * ?")
每天早上 9 点执行一遍,自己判断哪些需要发送,然后执行
sujin190
336 天前
长时任务不要用暂时对接和计时器,否则就是个大坑,最靠谱最简单的还是每天执行个任务查询下满足条件的执行就好了
mdn
336 天前
每天 9 点定时检测,>=15 && < 16 的发送短信
nkidgm
336 天前
无必要放队列啊,每天定期扫表的时间字段,发现时间差在规定范围内,就触发通知程序。

新车年检有效期一般是 2 年,你不会提前 2 年就把年检的通知消息放到消息里面吧,你得保证 2 年期间这个消息不会丢失才行,还有队列被撑爆得情况。
Ericcccccccc
336 天前
记住一点, 任何定期触发的功能靠的都是轮询.
nkidgm
336 天前
最简单用 spring task 去执行 SQL 就行了。
mmdsun
336 天前
每天跑,SQL 查 监控剩余 ∈[15, 16 ]天 , 查出来处理通知就可以了。

数据量大可以用那种支持 mapreduce 分片的任务框架,比如 PowerJob 框架,这个作者也在 v 站。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/960453

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX