WEB 架构的项目,是一个预约系统,需要在客户预约时间前三十分钟发送一条短信提醒客户,我想到的方案是做个定时器定时访问指定页面,在页面里实现发送短信的逻辑,我想请教下其他的解决方式。最好是无需维护的方案,项目交付客户之后,不能老是去监控定时器挂了没吧?
|
1
需要你交待下技术选型背景,什么语言什么框架。比如 node 下的 egg.js 自带定时器,稳如老狗。
|
|
2
无需维护的还是机器自带的 crontab 比较稳,写个 curl 命令访问你的 HTTP API 就可以了。
如果需要消除单点的话,可以同时在多个机器上配置 crontab,然后在你的程序( HTTP API )里访问 Redis 或其他数据库,加一个 30 分钟的锁避免重复触发。 |
|
limuyan44Sep 8, 2018 via Android
3
既然是交付的,又不要维护,丢 db 里面开个定时任务慢慢扫吧,这种任务也不用精确
|
|
FRankie222Sep 8, 2018 via iPhone
4
我做过一个需求,不知道和你说的是否相似,在数据库中按照主键存一个时间点,到了这个时间点给主键对应的信息发送消息,当时是用的定时任务每隔 2 分钟去跑一次,把里面的时间点和当前的比较,如果时间差在两分钟内,就发出去。数据量不大,每次也就一万多条
|
|
brickyangSep 8, 2018 via iPhone
5
可以用 Redis 的过期键。客户预约时就新建一个到「提醒时间」过期的键,过期时 Redis 会有消息,通知系统订阅该消息即可。
稳不稳主要看 Redis,用阿里云之类的服务基本可以放心。 |
|
GGGG430Sep 8, 2018 via iPhone
6
延时消息队列
|
|
anonymous256Sep 8, 2018 via Android
10
|
|
daimazhaSep 8, 2018
11
quartz
|
|
12
楼上的方案用来发送短信提醒可以,不过还有一个需求是定时下发微信客服消息,微信会校验域名,似乎不行哦
|
|
xiexingjiaSep 8, 2018
13
|
|
letitbesqzrSep 9, 2018
14
@brickyang #5 是说的 keyspace notification 这个特性吧。
被这东西坑的,少记录了一堆重要数据,数据量大的话,建议还是不要用了。。 |
|
brickyangSep 9, 2018 via iPhone
15
@letitbesqzr #14 什么是「少记录了一堆东西」?
|