当前位置:编程学习 > C#/ASP.NET >>

短信平台收发问题

现在我们也在做短信平台。短信网关这块的接入程序是调用了电信提供的API接口,不需要处理具体协议)。

提供给应用的数据库接口,用于应用进行短信收发。上层应用将待发送短信插入数据库表即可。

短信网关的设计如下:
1、建立三张表待发送短信表、发送短信结果表、短信接收表
2、建立一个发送线程轮询数据库,获取N条记录(如100),加入待发送短信队列,开启多个线程循环发送。发送完成从待发送队列移除,放到已发送短信队列。
3、建立一个入库线程,将步骤2中已发送短信队列数据保存到数据库短信结果表。
4、建立一个接收短信状态回执线程,将短信回执加入到短信回执队列。建立另外一个线程,根据短信回执更新数据库短信发送结果表已发送短信的状态。

问题:
1)步骤2、3的设计是否合理。就是发送线程不执行数据库操作,专门开一个入库线程做这个操作。
2)由于是调用电信提供的短信网关API接口发送短信,我调用接口发短信是否还需要做发送速度的控制? --------------------编程问答-------------------- 帮顶楼主~~~~~~·· --------------------编程问答-------------------- 步骤2、3 完全可以不要,建议使用微软系统自带的 消息队列 MessageQueue ,写个函数来监听MessageQueue ,有新消息了来了就促发调API接口发送短信,发送完成了,在继续监听下一个消息,这样就不需要做发送速度的控制,不出现混乱情况 --------------------编程问答--------------------
引用 2 楼 lugang386 的回复:
步骤2、3 完全可以不要,建议使用微软系统自带的 消息队列 MessageQueue ,写个函数来监听MessageQueue ,有新消息了来了就促发调API接口发送短信,发送完成了,在继续监听下一个消息,这样就不需要做发送速度的控制,不出现混乱情况



数据库做应用收发接口的方案是已经确定的。

现在的疑问:是否有必要专门开一个线程来做入库操作。 --------------------编程问答--------------------
引用 3 楼 hell74111 的回复:
引用 2 楼 lugang386 的回复:步骤2、3 完全可以不要,建议使用微软系统自带的 消息队列 MessageQueue ,写个函数来监听MessageQueue ,有新消息了来了就促发调API接口发送短信,发送完成了,在继续监听下一个消息,这样就不需要做发送速度的控制,不出现混乱情况


数据库做应用收发接口的方案是已经确定的。

现在的疑问:是否有必要……


这个不需要单独在开个线程,直接在2的步骤里操作 入库就可以了 --------------------编程问答-------------------- 短息收发系统最好和具体的业务系统分离。业务需要收发不同类型的短信,短信系统负责具体的收发,业务无关。 --------------------编程问答-------------------- 因为是数据库接口,你要做的工作:
1.将数据写入数据库,发送是对方的工作
2.看要求可以做可做可不做,如果你要获取发送状态,得再次查询数据库。

不知道是不是用的电信的openmas,觉得比较贵三网互通也有问题。 --------------------编程问答-------------------- 短信子系统收到短信之后,经过短信路由子系统路由到不同的业务模块,进行不同的业务处理。
--------------------编程问答-------------------- 需要配合队列,每次都从数据库读写代价太大了,不容易扩展。
不过最终的设计结果看你们的短信量了,这个需要评估。 --------------------编程问答-------------------- 除
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,