短信接口平台

Friday, February 6th, 2004 09:01am

最近忙着弄短信接口的平台程序,现在已经基本做完,跑起来看着还挺顺的。我简单介绍一下。

详细说明

中国电信和中国移动的短信协议要求客户端主动连接到网关收取信息,并且接受的连接只能有一个。因此客户端的接收程序必须尽快处理收到的信息,好尽快接收下一个信息。而客户端的程序又有很多事情必须处理,比如写日志并分发给相关的应用。

开始我用多线程的方式,即接收程序收到从网关发来的信息后,启动一个新线程处理收到的信息,本身接着收下一个信息。新启动的线程负责写日志,然后分发给相关的应用。这种方式运行起来效果不错。

接着我又遇到一个问题,写日志和分发给应用的程序是两个不相关的东西,放在一起有点别扭。写日志的程序对实时性要求不高,只要保证记录了就可以;而分发程序需要尽量快,不应该等日志完了再执行。再起一个线程写日志,一个线程分发?这样线程多了反而更慢,不太好。

对与从网关收到的信息我们可能有许多处理程序,比如一个是写日志,一个是分发给应用。就日志来说,就有写数据库、写文本文件、控制台输出等。所以我采用了消息队列的方式,这样接收程序收到从网关来的信息后送出一个消息到消息队列中,需要处理的程序自己来取就是了。这个消息队列用的是 Topic/Subscribe模式,就是接收程序发出的同一个消息可能被多个处理程序接受。这样对信息的不同处理,我就可以写不同的消息处理程序。

接收完了,看看向网关发送信息的情况。短信网关一般也只允许一个连接进行发送,而且中国电信和中国移动使用的短信网关协议都是异步的,这样用消息队列的发送也很理想。

整体框架入下面这幅图,



Google
 
Web erning.net