定时消息推送系统如何设计? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhangxiao
V2EX    问与答

定时消息推送系统如何设计?

  •  
  •   zhangxiao 2014-11-25 16:21:12 +08:00 via Android 6194 次点击
    这是一个创建于 4022 天前的主题,其中的信息可能已经有所发展或是发生改变。
    功能是,能让用户选择在某个时间点推送给他一条消息。用户能取消或是修改推送的时间和内容。

    问题是怎么触发比较好?最基本的办法就是算出要推送的时间,存数据库里。一个进程不停地刷数据库,假设五分钟一次,找到需要发送的发出去。

    感觉上面这个做法有点笨,有没有更好的办法?
    12 条回复    2025-05-15 10:57:32 +08:00
    abelyao
        1
    abelyao  
       2014-11-25 16:30:14 +08:00
    没实践过的,随便说一个思路,楼主看看是否可行。
    像你说的,有个定时器,每隔一段时间刷一次,但不用刷得太频繁,比如 30 分钟一次就好,拿到所有要推送的内容之后,用倒计时的那种定时器,每一条要推送的内容,分别设定 XX 分钟后触发推送的事件。
    582033
        2
    582033  
       2014-11-25 16:39:45 +08:00
    简单点的话,数据库存用户的设置,定时任务触发后扔到发送消息的队列里
    Mac
        3
    Mac  
       2014-11-25 16:48:12 +08:00
    WINDOWS计划任务。。。
    tangzx
        4
    tangzx  
       2014-11-25 16:52:00 +08:00 via iPhone
    笨,但是扩展性是挺好的,即使有一千个用户,系统负载量还是那么点儿(一个线程)
    66beta
        5
    66beta  
       2014-11-25 18:14:44 +08:00
    windows计划任务、Linux cron job ?
    如果是PHP,可以每隔一段时间用以上跑一个PHP文件~

    如果不是很紧急的话,可以参考Wordpress的WP-Cron,网站被访问就会触发,如果没人访问的话......
    evlos
        6
    evlos  
       2014-11-25 18:24:02 +08:00 via iPhone
    你也可以不一直刷数据库,做个索引放内存里,不过其实也没改变多少
    greatdk
        7
    greatdk  
       2014-11-25 18:26:59 +08:00
    定时消息队列,SAE,BAE这些里面都有的
    lupino
        8
    lupino  
       2014-11-25 20:52:11 +08:00   1
    可以试一试 https://github.com/Lupino/periodic 定时任务系统,把任务发送到定时任务系统上面,由 worker 来执行任务
    lupino
        9
    lupino  
       2014-11-25 20:57:33 +08:00
    可以提交定时任务,修改触发时间,并删除任务,刚好满足你的需求
    ijse
        10
    ijse  
       2014-11-25 21:01:15 +08:00
    消息队列,用ActiveMQ什么的,可以消息通知程序处理。。
    otakustay
        11
    otakustay  
       2014-11-26 17:48:07 +08:00
    直接转成crontab……或者用quartz这种成熟的第三方
    wendaomuxin
        12
    wendaomuxin  
       198 天前
    环形队列 定时触发
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2685 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 14:16 PVG 22:16 LAX 06:16 JFK 09:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86