`
feidi
  • 浏览: 120397 次
社区版块
存档分类
最新评论
阅读更多

短信接口平台

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

详细说明

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

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

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

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

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

整体框架入下面这幅图,
SMGP CMPP big picture

Transport Service 是和网关通讯的程序。它负责保持连接、发送信息给网关、接收网关来的信息,并把信息发送到消息队列

Deliver Controller 是分发信息给相关应用的控制器。它从消息队列中收取Deliver信息,然后根据信息的内容或者用户的状态,用不同的Application Deliver把信息分发给应用

Application Deliver 负责具体分发信息给应用。不同的应用可能要求不同的信息接受方式,比如多数是用HTTP方式,分发程序用POST方法把信息提交给应用,这中方式用的是 AppDeliverHttpPost;有的是用SOAP,用的就是AppDeliverSoap了。总之,要什么新方法,写一个Application Deliver就可以了。

Logger 就是写日志的程序。它从消息队列中收取所以消息,然后写日志。如果要有不同的日志方法可以写不同的Logger,比如我有一个DBLogger,是向数据库里写日志的实现。

Sender 是通过Transport Service发送Submit信息给网关的程序。短信协议是异步的,但多数应该要求同步,就是要知道发送是否成功。因此Sender多提供了一个实现同步的方法。Sender发送后,从消息队列中等待发送的结果,然后返回结果。

Web Service 是接受应用发送信息的接口。为什么要这个呢?和接收一样,多数应用发送信息的时候是用HTTP的POST方法。而且这样应该不应该知道短信协议的数据包格式,这样同一个应该可以给不同的短信协议使用,比如中国电信的SMGP和中国移动的CMPP。

Application 就是最终处理短信的应用了。它和短信协议无关,比如我们有个游戏同时支持中国短信的小灵通和中国移动的GSM手机。另外给个Web的例子: http://www.hcmms.com.cn/greetings/

在实际实现中,我使用了J2EE。我本来对J2EE挺烦的,不过这次效果不错,特别是它的JMS,正好适合我的需要。开始我自己做消息队列管理,后来发现做Topic方式的实现比较麻烦,所以还是用现成的吧。Application Server选用了JRun或JBoss。因为这两个用JMX,我比较容易写自己的MBean放到作为应用服务的Service。

其中Transport Service就是一个JMX的MBean。另外根据JRun和JBoss的要求,做了一下扩展,很顺利的作为应用服务器中的一个服务执行了。为什么用 JMX?因为它比较容易管理,比如我要修改Transport Service的连接超时参数,用HttpAgentAdapter直接修改就可以了,服务本身就不用重新启动。

Deliver Controller、Logger我都做成了MessageBean,好接收消息队列。Sender和Application Deliver是Stateless的SessionBean,方便别人调用。

用了EJB还一个好处是,我Deploy和Undeploy其中的某些Bean的时候,不影响到其他Bean提供服务。比如新做了一个 Application Deliver,直接Deploy后,这个功能就可以用了。其他服务都不需要重新启动,有点Plug&Play的味道。

数据库我用的是MySQL,我个人还是比较喜欢这个数据库的。

详细说明 http://www.dragonsoft.net/wiki/HcmmsWiki/TechnicalDiscussion/SMSTechDiscussion/ShortMessagePlatform

Web CVS: http://cvs.dragonsoft.net/horde/chora/cvs.php/phs-smgp/

分享到:
评论
1 楼 locoray 2007-08-03  
不错!!

相关推荐

    短信接口代码说明支持主流语言

    【短信接口代码说明支持主流语言】的描述涵盖了企业信息系统中短信功能的重要应用,涉及OA管理系统、短信商业信息发布、客户关系管理、短信呼叫中心等多个领域。这些系统通常利用短信接口进行数据交互,提升效率并...

    java调用第三方的短信接口

    在Java开发中,调用第三方短信接口是一项常见的任务,用于实现验证码发送、通知提醒等功能。以下将详细讲解这个过程中的关键知识点。 1. **HTTP请求**:大部分第三方短信平台提供的API是基于HTTP协议的,因此Java中...

    免费的短信接口(电信)

    标题中的“免费的短信接口(电信)”指的是利用中国电信提供的免费短信服务接口,开发者可以通过编程方式集成到自己的WEB系统中,实现短信的自动发送功能。这样的接口通常用于验证用户身份、发送通知或提醒等场景。 ...

    2018超级短信接口文档

    ### 2018超级短信接口文档解析 #### 一、业务流程 超级短信接口的主要功能包括:超级短信创建、超级短信发送任务创建以及被叫号码订购库管理。以下是具体的业务流程: 1. **整体流程**: - 接入方创建超级短信后...

    短信平台接口开发包dll,webserivers

    短信平台接口开发包主要用于在应用程序中集成短信发送功能,它为开发者提供了多种方式来与短信服务提供商进行交互,包括DLL动态链接库、Web Services、HTTP接口以及ActiveX组件等。这些接口使得开发者无需深入了解...

    短信平台接口

    在本例中,我们将围绕C#语言和短信接口展开讨论,结合提供的文件"平台接口说明-HTTP.doc"和"说明.txt",来深入理解短信平台接口的工作原理和实现方式。 1. **接口定义**:短信平台接口是一种API(Application ...

    短信开发接口包

    HTTP是互联网上应用最为广泛的一种网络协议,通过`Java 调用WebService接口和HTTP接口 均支持GET和Post方式.rar`文件,我们可以看到Java开发者可以使用GET或POST方法来发送短信请求,这在处理跨平台应用时非常有用。...

    Java 调用短信API接口

    摩杜云短信业务接入,该平台支持国内和国际快速发送验证码、短信通知和推广...国内短信支持三网合一专属通道,与工信部携号转网平台实时互联。电信级运维保障,实时监控自动切换,到达率高达99%。完美支撑8亿短信发送。

    国外短信发送接口

    2. **短信接口**:短信接口是云通讯服务的一部分,它允许开发者通过编程方式发送和接收短信。接口通常以HTTP/HTTPS API的形式存在,支持各种编程语言,如Python、Java、JavaScript等,方便开发者在应用中集成。 3. ...

    免费短信发送接口开发包

    1. **短信接口**:短信接口是一种API,允许应用程序通过网络向指定手机号码发送短信。它通常包括发送短信、接收短信、查询短信状态等功能。在本开发包中,提供了多种接口类型,便于开发者选择最适合他们项目的技术栈...

    亿星短信平台post接口文档

    【亿星短信平台POST接口文档】提供了详细的关于如何利用接口发送短信的信息,主要涉及以下几个核心知识点: 1. **Web Service接口**:短信业务能力引擎基于Web Service技术,它允许开发者无需掌握复杂的电信网络...

    sms短信平台源代码

    短信平台是一种用于批量发送和接收短信的应用系统,通常由通信协议处理、短信编码解码、数据库管理、用户接口等多个模块组成。本篇将重点解析基于JAVA开发的短信平台源代码及其核心知识点。 1. **通信协议处理**:...

    c++短信平台源程序

    **C++短信平台源程序详解** C++短信平台是一个基于C++编程语言构建的应用程序,用于发送和接收短信。在IT行业中,短信平台通常被用于企业级应用,如验证码发送、通知服务、客户服务等,其核心功能包括短信的编码、...

    各种平台短信猫开发解决方案.

    本文将详细探讨在不同平台上的短信猫开发解决方案,包括跨平台支持、Java编程接口以及RXTX库的应用。 1. **跨平台开发**: 短信猫的跨平台开发主要涉及在Windows、Linux、Mac OS等操作系统上实现相同的功能。这...

    统一接口平台.pdf

    统一接口平台是一种IT架构设计,它旨在整合多个子业务系统与外部系统间的数据交互。通过统一接口层实现数据的获取和分发,降低系统间的直接耦合,实现数据交互的标准化。以下将详细介绍统一接口平台的相关知识点。 ...

    统一接口平台.doc

    主动请求接口通常由电子渠道接口平台向外部系统发起,如与BOSS、银联、短信/WAP网关、第三方支付系统的接口;被动请求接口则是外部系统向电子渠道发送,如业务查询、开户、办理、支付等。以查询类业务为例,用户提交...

    PHP 调用短信API接口

    摩杜云短信业务接入,该平台支持国内和国际快速发送验证码、短信通知和推广...国内短信支持三网合一专属通道,与工信部携号转网平台实时互联。电信级运维保障,实时监控自动切换,到达率高达99%。完美支撑8亿短信发送。

    139邮箱短信发送源码.rar

    139邮箱短信发送源码是一个用于通过139邮箱平台发送短信的程序代码,它主要涉及到了电子邮件协议、短信服务以及可能的编程语言技术。在这个压缩包中,包含了一个名为"易语言139邮箱短信发送源码"的文件,我们可以...

    华为短信api的java源码

    1. **华为短信API**:华为提供的短信接口,允许开发者集成到自己的应用中,实现自动化发送短信功能。这些API可能包括注册、鉴权、发送短信、接收短信、查询状态等多种操作。 2. **CNGP、CMPP2、CMPP3、SMGP、SGIP、...

Global site tag (gtag.js) - Google Analytics