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

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

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

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

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