现在是有个车辆信息表,表里有年检到期日期 inspection_date 和保险到期日期 insurance_date 字段,现在的需求是对这些时间进行监控剩余 15 天有效期进行消息提醒,推送通知给驾驶人员。想问下这场景应该怎么做?感谢
现在是有个车辆信息表,表里有年检到期日期 inspection_date 和保险到期日期 insurance_date 字段,现在的需求是对这些时间进行监控剩余 15 天有效期进行消息提醒,推送通知给驾驶人员。想问下这场景应该怎么做?感谢
|
lsk569937453Jul 28, 2023
1
每天定时任务扫描一下呗。
|
|
buchikomaJul 28, 2023
2
起一个永驻的后台进程,在设置 inspection_date 和 insurance_date 的时候,分别计算 Duration (多久秒之后到期),去后台进程注册这个任务并在 Duration 时间之后发送一条 message 给前台进程做推送,Duration 可以理解为一个 timeout
|
|
v2ebJul 28, 2023
3
Timer 就好了, 项目启动时候扫一下当天的, 定时任务每天扫, 扫出来用 Timer 处理
|
|
simonlu9Jul 28, 2023
4
redis 延时队列
|
|
me1onsodaJul 28, 2023
5
延迟队列
|
|
braderJul 28, 2023
7
|
|
8
这不就是一个定时任务,每天扫一遍就行了的事么。延迟队列瞎 JB 扯淡,为了用中间件而用。
|
|
braderJul 28, 2023
12
@Allenxup 我以前做过类似的需求,通知表字段就记录一些标识、内容、通知时间之类的,每天在白天多少点发通知。我们做白天的话,一是不会打扰用户,二是我们接入的是厂商通知栏推送,有些厂商晚上是不允许你推送的
|
|
blackmirrorJul 28, 2023
13
这不最简单的功能了,定时跑不就完了,还真要造火箭 啊
|
|
sujin190Jul 28, 2023 via Android
15
长时任务不要用暂时对接和计时器,否则就是个大坑,最靠谱最简单的还是每天执行个任务查询下满足条件的执行就好了
|
|
mdnJul 28, 2023
16
每天 9 点定时检测,>=15 && < 16 的发送短信
|
|
nkidgmJul 28, 2023
17
无必要放队列啊,每天定期扫表的时间字段,发现时间差在规定范围内,就触发通知程序。
新车年检有效期一般是 2 年,你不会提前 2 年就把年检的通知消息放到消息里面吧,你得保证 2 年期间这个消息不会丢失才行,还有队列被撑爆得情况。 |
|
18
记住一点, 任何定期触发的功能靠的都是轮询.
|
|
nkidgmJul 28, 2023
19
最简单用 spring task 去执行 SQL 就行了。
|
|
mmdsunJul 28, 2023
20
每天跑,SQL 查 监控剩余 ∈[15, 16 ]天 , 查出来处理通知就可以了。
数据量大可以用那种支持 mapreduce 分片的任务框架,比如 PowerJob 框架,这个作者也在 v 站。 |
|
kanepan19Jul 28, 2023
21
这种需求要什么延迟队列, 又不是订单超时, 直接扫库就好了。
那啥啥某电商不就直接扫库的吗? |
|
simbaChengJul 28, 2023
22
时间轮
|
|
a62527776aJul 28, 2023
23
时间轮不是非常成熟吗?
|
|
ZhiyuanLinJul 28, 2023
24
今年刚做过几亿用户类似需求的项目,也是写个 Spring Batch 每天去扫数据库的。没必要用多复杂的架构。
|
|
senjyougaharaJul 28, 2023
25
可以一周或半周跑一次轮询,然后逐个通知
|
|
vagusssJul 28, 2023
26
定时扫库就行, 简单有效
|
|
wqhuiJul 28, 2023
27
每天扫一下表不就行了吗,怕数据量太大,用 SQL 把筛选出来的数据扔个临时表,应用分批取出来发通知
数据更新导致发错其实不要紧,通知类的东西不太重要。比如 8 点扫表这个人到期了,但 10 点才发出通知,这个人 9 点跑去更新了到期时间,照样给他发也没事又不会导致什么记录被覆盖 |
|
simonlu9Jul 28, 2023
28
@Allenxup 很简单,删掉就可以了,参考 redission 实现,没必要把时间久远的放 redis,用 xxl 每天扫描一遍是不是快到 24 小时结束了,如果是旧放到 redission
|
|
la2laJul 28, 2023
29
定时任务每天扫一遍就行呗
|
|
heviJul 28, 2023
30
虚心请教定时任务的逻辑:
发送前是否还要查一次有没已经发过?如果定时器还没扫之前,程序崩了 |
|
huzhizhaoJul 28, 2023 via iPhone
31
定时器扫不就完了。
|
|
xuanbgJul 29, 2023
32
定时器每天凌晨扫一次表,符合条件的发通知就完了。写代码,最简单有效的笨方法才是最好的。
|