大致需求:
向用户在固定日期(比如情人节)群发短信,用户自己也可以设定日期(比如结婚纪念日),同时可以设定是否接收短信。
我写了一个windows服务,每天定时检索数据库,满足条件就发送短信。
关于具体实现细节,我想到两种,但不知哪种更好,请帮忙分析:
(1)将数据库中满足条件的用户放入缓存,每隔五分钟或十分钟检查一次缓存,如果有满足条件的用户就发送短信。这种方式,第一要在特定时间更新缓存(比如后台删除了用户,或用户更改了日期及是否接收短信等操作),第二是,由于每天向每个满足条件的用户发送一次短信即可,因此需要给用户设定的每个纪念日设定一个标识,发送完成后更改状态。但这样一来,还会涉及到一个问题,比如初始为0,发送之后为1,这个肯定会作为检索满足发短信用户的条件,如果发送之后始终为1,那么用户如果更改了日期也就不能再接收了。因此,还需要在用户对日期操作改变时更新发送短信的状态。
(2)利用windows服务的定时功能,每天只执行一次,比如每天的9点,这种方式相对上面的会省事好多,对数据库也不会产生太大压力。但这样一来,可能会产生另一个问题:比如有大量用户待发送,几千或几万,如果只执行一次,是否能够通过这一次全部发送成功,因为通过windows服务是完全自动运行的,没有人工干预。这是我目前所担心的。