有个应用场景,发送短信限制为相同手机号发送短信时间间隔必须是15s,且长度限制为65字,而一些订单必须拆成几条短信,故设计此发送方案、
短信队列设计方案
设计方案:
短信拆分方案:
(1) 少于66字,一条发送
(2) 多于65字,拆成62字一条,后面加上(x) x表示页码
短信发送方案:
(1) 所有短信存入数据库存档,并赋予发送状态标志位is_sent =0,加上时间,发送人卡号,内容,ID自增长
(2) 每隔20s,扫描数据库提取未发送的短信,并保证每个号码发送条数为1,装入taskqueue发送
(3) Taskqueue发送成功后,置is_sent=1
(4) 不成功滚入下一次发送队列
数据库设计:
ID | |
cardn | |
Send_time | |
Add_time | |
Tele_num | |
Send_content | |
Is_sent |
CREATE TABLE `think_sms` (
`id` int(100) NOT NULL,
`cardn` int(20) NOT NULL,
`send_time` int(20) NOT NULL,
`add_time` int(20) NOT NULL,
`tele_num` bigint(30) NOT NULL,
`send_content` varchar(80) NOT NULL,
`is_sent` int(2) NOT NULL DEFAULT ‘0’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;