引言

手机短信在系统的应用中越来越广泛,从单纯的发送信息到手机,发展到接收手机发送的短信,进行信息的获取,更有甚者,还可以进行业务的变更,业务数据的修改。从少量的发送,发展到大量的收发,衍生出大量的互动性短信。这就对短信收发的设计提出了更高的要求,不仅仅是简单的发送消息,不仅仅是简单的短信模块,而且需要配合消息队列,短信路由子系统,业务编码规则等等技术来满足大量互动性短息的收发要求。

1、短信收发类

package com.andyshi;
import java.rmi.RemoteException;
import org.tempuri.WebServiceSoapProxy;
public class SMSManager {WebServiceSoapProxy client=new WebServiceSoapProxy();public SMSManager(){
//      client.setEndpoint("http://sdk2.entinfo.cn/webservice.asmx");}public void Receive(){}public void Send(){try {client.sendSMS("sdfsd", "sdfsf", "sdf", "sf");} catch (RemoteException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

2、短信收发模块

成为几个类的组合,Sender,Receiver,还有一些辅助的方法,而且输入输出也从简单类型变成了实体类,减少模块调用者的出错概率。

变化

1、从单个类变成了几个类的组合。

职责单一。

2、增加辅助类。

例如短信实体的创建类。

因为收到的短信是字符串,而且可能是多条短信,所以增加了一些解析类,从字符串中解析出短信,生成短信实体。

3、输入输入

整个收发过程的输入输出从简单类型的变成了实体类,这样可以减少模块调用者出错的概率,对外更加内聚。

3、短信收发子系统

随着短信收发量的增大,同步实时发送和接收已经不能满足要求。而且随着业务的增加,业务系统的增加,有很多地方都需要短信的收发功能,比如说短信验证,短信查询,短信互动,订阅短信通知,群发短信,短信操作业务,短信变更业务数据。业务也从单纯的发,或者是少量的收,变成大量的收发处理。

这时候需要考虑更多的东西,例如短信的实时性,可靠性,自动重发,优先级。需要将短信的收发和处理分开,需要消息队列的配合,将收到和需要发送的短信先存入消息队列,然后定时从消息队列获取,进行发送或者业务的处理。

4、短信收发平台

短信收发平台负责具体的短信收发工作,分离具体的业务处理,增加短信路由子系统。

短信有三个运营商:移动,联通,电信。

4.1 短信路由子系统

1、短信平台收到短信之后,交给短信路由子系统,将收到的业务编码,按照业务编码规则路由到某个业务子系统,进行业务的处理。如果是指令性的短信,则不需要信息返回;如果是交互性的短信,业务子系统处理之后肯定还需要发送短信,发送短信给短信路由子系统。

2、如果业务子系统需要发送短信,肯定是需要发送给一个手机号的,这个手机号只可能是具体的一个运营商的,但是业务子系统不用关心这些,它只是知道发送给一个手机号一段消息,然后交给短信路由子系统,短信路由子系统来决定经由那个运营商的通道发送到具体的手机号。

4.2 存储设计

很多的短信都可以用模板+具体业务数据(例如祝福类短信,其中的用户名不一样,其他的内容都是一样的)的形式来表示,业务子系统负责存储模板和业务数据,这样可以减少很多冗余,而且需要修改短信内容的话,只需要修改模板就可以了。

短信平台存储完整的短信内容,方便查询统计。

4.3 其他

随着短息量越来越大,子系统也会使用消息队列来缓存收发的消息,减轻具体业务的处理压力。

============================================

后记

==========

2013-08-14

发送子系统

接收业务系统来的短信,进行具体的发送工作。发送之前,可能需要区分通道,也就是短信是发给那个运营商的,之前是想交给路由子系统来实现的,但是觉得这个工作更应该是发送子系统来做的事情,路由子系统和业务还是有一点关系,至少还有一个业务匹配规则配置。

接收子系统

接收外部发送过来的短信。

路由子系统

路由和分解短信到具体的业务子系统,路由的规则包括特服号码(运营商或者是SP分配给短信业务申请者的一个号码)和短信业务的识别码。

比如说发送到100900的都是订单获取的业务,发送到100800都是个人信息获取的业务,发送到100700都是帮助获取的业务。

识别码也就是接收短信的内容,或者是内容的前几位数字。比如说接收到的内容是QX10000,那就是订单子系统的,用来取消(QX)订单,订单编号是10000。

转载于:https://blog.51cto.com/virusswb/1268657

从短信类到短信平台之设计篇相关推荐

  1. 如何设计实时数据平台(设计篇)

    导读:本文将会分上下两篇对一个重要且常见的大数据基础设施平台展开讨论,即"实时数据平台". 在上篇设计篇中,我们首先从两个维度介绍实时数据平台:从现代数仓架构角度看待实时数据平台, ...

  2. 华信云SMS短信平台介绍

    一.平台介绍 华信云SMS短信平台(简称:华信通)是一套高性能.易部署.高灵活度的短信网关平台,是面向大型企事业单位.政府机关等综合性的服务平台,提供面向客户的短信接入.发送.管理.统计.数据处理等综 ...

  3. 电力公司SMS短信群发平台的设计与实现

    潍坊科技学院 本科毕业设计(论文) 题 目 电力公司SMS短信群发平台的设计与实现 院(系) 专 业 科学与技术 学 号 学生姓名 指导教师 刘效伟 起讫日期 2015.1.11-2015.6.6 设 ...

  4. 网页短信后台开发 短息系统平台定制 web版定制 平台源码架构 短信源码开发升级接入SMPP通道

    网页短信后台开发 短息系统平台定制 web版定制 平台源码架构 短信源码开发升级接入SMPP通道 WEB短信系统SMPP接入功能上线 接入SMPP通道所需要用到的技术 1:多线程 2:服务程序,并不是 ...

  5. 医疗短信解决方案:医疗云平台如何对接通知短信?

    医疗系统中短信通知场景: 1.医疗云平台发送预约挂号短信 2.医疗云平台发送就诊短信提醒 3.医疗云平台发送订单通知短信 4.医疗云平台发送缴费短信通知 5.医疗云平台发送停诊短信通知 6.医疗云平台 ...

  6. 注册app短信验证平台_APP短信对接选择怎样的平台

    很多APP为了安全都会使用到短信验证,比如说我们在某些APP上注册的时候,就需要输入手机号,然后输入收到的短信内容才能继续操作.这个过程其实就是APP短信对接后的效果.试想下如果我们很长时间收不到短信 ...

  7. 企信通100短信平台对各个行业短信应用需求分析

    1.API接口验证短信.订单短信,支持多种语言对接,自由度高灵活性高,采用专用端口一对一使用,保证稳定性. 2.用于群发短信,自由编辑内容,直接群发的客户,可采用企信通100软件平台直接操作发送,不需 ...

  8. 在线接受短信的虚拟号码服务平台(SMS-Activate)的使用

    在注册ChatGPT时,由于需要使用海外手机号进行验证,但对于大多数国内人士来说,通常不具备自有国外手机号的条件,因此借助第三方平台提供的服务完成这一步骤成为不失为一个不错的选择.本文主要介绍在线接受 ...

  9. 企业短信应用平台的设计

    手机短信作为一种非常重要的沟通方式,正在被越来越多的企业重视.本文介绍的企业短信应用平台简单易行,可以为企业提供方便灵活的.基于短信的双向交流渠道. 多年来,及时准确地采集前端销售数据.快速地将各种消 ...

最新文章

  1. pycharm matplotlib.pyplot.figure().add_subplot()绘制三维图时报错:ValueError: Unknown projection 3d(bug)
  2. Dictionary To Dynamic
  3. pixel 6 root
  4. (已解决)小程序 request:fail ssl hand shake error 安卓端websocket报错
  5. [ZJOI2009]取石子游戏
  6. java B2B2C Springcloud仿淘宝电子商城系统
  7. rust石头墙几个c4_从安顺自驾石头寨一日游
  8. Vim安装使用和配置
  9. 信息图:iOS 7开发者需要知道的事
  10. 59. web 攻击技术(3)
  11. 单页面应用(SPA)与多页面应用(MPA)的区别对比
  12. 金山打字通五笔介绍及讲解
  13. 快速输入对号框(框中加对号或者对勾)的方法
  14. 去掉vue中万恶的eslint
  15. java根据经纬度获取地址信息
  16. Win10安装cuda、cudnn检测是否安装成功
  17. STM32之TIM1高级定时器
  18. 微信公众号开发及运营(一)
  19. GPIOB->CRH=0XFFFF0FFF;GPIOB->CRH|=(u32)8<<12;(学习笔记)
  20. 12【源码】数据可视化:基于 Echarts +Java SpringBoot 实现的动态实时大屏范例 - 供应链

热门文章

  1. MySQL -- 创建用户并提升用户权限
  2. AndroidStudio安卓原生开发_Activity的启动方法_隐式启动2种方法_activity关闭---Android原生开发工作笔记83
  3. 大数据_MapperReduce_Hbase_批处理batchMutate源码分析_数据的写入流程源码分析---Hbase工作笔记0032
  4. springcloud工作笔记091---tk.mybatis.mapper.MapperException: 当前实体类不包含名为XXXXX的属性!
  5. SpringCloud工作笔记088---SpringBoot启动报错:启动后的端口是8080但是明明配置文件中是8000_Request execution error_ java.net.Conn
  6. mybatis直接执行sql语句后续之一
  7. 如何将数据库中的记录表导入到VC中
  8. delphixe2 SIZE_T=NativeUInt类型
  9. 两台计算机怎样共享一台打印机共享文件夹,两台电脑怎么共享文件和打印机
  10. 一步一步写算法(之循环单向链表)