通过 IaC 管理基础设施,实现环境配置可追溯。
如何在短信发送中添加延迟功能

前言
短信发送延迟功能,可以让用户在发送短信后,在一定时间内取消发送。这个功能对于发送重要信息时非常有用,可以防止发送错误的信息。
实现方式
实现短信发送延迟功能的方法有很多,这里介绍两种最常用的方法:
使用数据库定时任务
这种方法是利用数据库的定时任务功能,在短信发送后一定时间内,如果用户还没有取消发送,则自动发送短信。
这种方法的优点是实现简单,不需要修改短信发送程序,也不需要修改短信服务提供商的 API。
缺点是定时任务的执行时间可能不准确,可能导致短信发送延迟时间不准确。
使用消息队列
这种方法是利用消息队列来存储短信发送请求,并在一定时间后将短信发送请求从消息队列中取出并发送短信。
这种方法的优点是实现简单,而且可以保证短信发送延迟时间准确。
缺点是需要修改短信发送程序,并且需要使用消息队列服务。
具体步骤
这里以使用数据库定时任务的方法为例,介绍如何实现短信发送延迟功能:
在数据库中创建一个定时任务表,表中包含以下字段:
id:定时任务 ID
sms_id:短信 ID
send_time:发送时间
cancel_time:取消时间
status:状态(0:未发送,1:已发送,2:已取消)
当用户发送短信时,将短信信息插入到定时任务表中,并设置发送时间为当前时间加上延迟时间。
启动一个定时任务,每隔一定时间(例如 1 分钟)检查定时任务表中所有未发送的定时任务。
4. 如果当前时间已经大于定时任务的发送时间,则将定时任务的状态更新为已发送,并发送短信。
5. 如果用户在发送短信后一定时间内取消发送,则将定时任务的状态更新为已取消,并删除定时任务。