• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kwklover
V2EX  ›  程序员

请教大家一个定时发送消息的实现思路

  •  
  •   kwklover · Sep 8, 2018 via Android · 4901 views
    This topic created in 2847 days ago, the information mentioned may be changed or developed.
    WEB 架构的项目,是一个预约系统,需要在客户预约时间前三十分钟发送一条短信提醒客户,我想到的方案是做个定时器定时访问指定页面,在页面里实现发送短信的逻辑,我想请教下其他的解决方式。最好是无需维护的方案,项目交付客户之后,不能老是去监控定时器挂了没吧?
    15 replies    2018-09-09 23:26:56 +08:00
    shiny
        1
    shiny  
    PRO
       Sep 8, 2018
    需要你交待下技术选型背景,什么语言什么框架。比如 node 下的 egg.js 自带定时器,稳如老狗。
    jybox
        2
    jybox  
       Sep 8, 2018   ❤️ 1
    无需维护的还是机器自带的 crontab 比较稳,写个 curl 命令访问你的 HTTP API 就可以了。

    如果需要消除单点的话,可以同时在多个机器上配置 crontab,然后在你的程序( HTTP API )里访问 Redis 或其他数据库,加一个 30 分钟的锁避免重复触发。
    limuyan44
        3
    limuyan44  
       Sep 8, 2018 via Android
    既然是交付的,又不要维护,丢 db 里面开个定时任务慢慢扫吧,这种任务也不用精确
    FRankie222
        4
    FRankie222  
       Sep 8, 2018 via iPhone
    我做过一个需求,不知道和你说的是否相似,在数据库中按照主键存一个时间点,到了这个时间点给主键对应的信息发送消息,当时是用的定时任务每隔 2 分钟去跑一次,把里面的时间点和当前的比较,如果时间差在两分钟内,就发出去。数据量不大,每次也就一万多条
    brickyang
        5
    brickyang  
       Sep 8, 2018 via iPhone
    可以用 Redis 的过期键。客户预约时就新建一个到「提醒时间」过期的键,过期时 Redis 会有消息,通知系统订阅该消息即可。

    稳不稳主要看 Redis,用阿里云之类的服务基本可以放心。
    GGGG430
        6
    GGGG430  
       Sep 8, 2018 via iPhone
    延时消息队列
    kwklover
        7
    kwklover  
    OP
       Sep 8, 2018 via Android
    @shiny windows 平台 asp.net 技术,我目前想到的方案就是通过计划任务定时访问指定网页。
    kwklover
        8
    kwklover  
    OP
       Sep 8, 2018 via Android
    @limuyan44 用的是 mysql 数据库,没有用 redis 那么高级的技术啊
    thinkif
        9
    thinkif  
       Sep 8, 2018 via iPhone
    @kwklover asp.net 用 Hangfire 之类的都可以,手上有几个项目用的这个,很好用
    anonymous256
        10
    anonymous256  
       Sep 8, 2018 via Android
    daimazha
        11
    daimazha  
       Sep 8, 2018
    quartz
    kwklover
        12
    kwklover  
    OP
       Sep 8, 2018 via Android
    楼上的方案用来发送短信提醒可以,不过还有一个需求是定时下发微信客服消息,微信会校验域名,似乎不行哦
    xiexingjia
        13
    xiexingjia  
       Sep 8, 2018
    letitbesqzr
        14
    letitbesqzr  
       Sep 9, 2018
    @brickyang #5 是说的 keyspace notification 这个特性吧。 被这东西坑的,少记录了一堆重要数据,数据量大的话,建议还是不要用了。。
    brickyang
        15
    brickyang  
       Sep 9, 2018 via iPhone
    @letitbesqzr #14 什么是「少记录了一堆东西」?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3273 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 80ms · UTC 10:36 · PVG 18:36 · LAX 03:36 · JFK 06:36
    ♥ Do have faith in what you're doing.