公司要建立一个内部短信平台,需要发短信的业务,对比了三大运营商:
电信:没有此业务。
联通:需要短信网关(硬件),调整部署非常麻烦,出了问题还要联通的人去机房调整,价格比较便宜。
移动:云MAS平台,不需要硬件,直接联系移动客户经理注册即可,可以通过SDK,WebService,CMPP协议等方式进行发信操作,价格比联通贵一点点。
权衡利弊之后,公司选择了移动的云MAS平台。
对比了三种介入方式后,我偷懒选择了SDK的方式,这篇文章将从头到尾的说明SpringBoot如何集成移动云MAS。
一、下载SDK的jar包
云MAS平台网址:http://mas.10086.cn/login
这个就非常傻,一开始找了半天才发现这个页面没有直接下载SDK的方式,最后是联系了移动的工作人员,才知道是下载那个SDK案例,从源码lib里把SDK的jar包拿出来!!
二、申请测试账号
在正式购买之前需要申请一个开发用的测试账号,申请方式是通过发送邮件,说是24小时之内回复,不过实际效率还是很快的,一般上午申请下午就发过来了。
邮件要求如下:
编制邮件说明客户情况、预接版本,技术联系人,发送给cmmas@139.com;
发邮件步骤是同事进行的,就不配图了。
最后会获取到一个测试账号,时效一个月。
三、引入SDK到项目中
短信平台设计中是一个Maven项目,使用SpringBoot等一系列SpringBoot框架。
所以使用Maven引用本地JAR包的方式来引入SDK。
1.首先安装SDK的jar包到Maven本地库
mvn install:install-file -Dfile=masmgc.sdk-0.0.1-SNAPSHOT.jar -DgroupId=com.masmgc -DartifactId=masmgc-sdk -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar
下载的jar包可以放在任意目录,使用上面的命令就可以将jar包安装到Maven本地库中:
-Dfile=masmgc.sdk-0.0.1-SNAPSHOT.jar //你下载的JAR包
-DgroupId=com.masmgc //组织名,pom.xml里引用时用的
-DartifactId=masmgc-sdk //你应该明白吧,和👆的一样
-Dversion=0.0.1-SNAPSHOT //👆一样
-Dpackaging=jar //包的类型
正确结果:
2.pom.xml中引入
如果引入后POM报错,那么就是你上面的操作有问题,仔细检查。
四、解决依赖冲突(不使用Spring不需要看)
如果你上面都引入正确,这时你再启动项目,有些童鞋就会发现一个惊喜!
项目起不来了!!
将SDK解包后发现,这个jar包中包含了大量的Spring框架的依赖!
SDK内的Spring依赖和咱们自己项目中的Spring版本冲突,导致项目无法启动。
当时我就发了个朋友圈:
在此道歉,对不起!我不应该鄙视任何人,移动的项目应该大都是外包的,所以移动应该没有程序员,所以我只是鄙视一帮不存在的人...
解决办法:
建议使用7z命令来直接删除Jar包里的文件
7z d masmgc.sdk-0.0.1-SNAPSHOT.jar org/springframework/
直接删除jar包里的所有Spring依赖
如果你的项目里有slf4j,请把jar里的slf4j也删除掉,虽然不删项目也能起来,但是看到那堆红色的警告还是很烦心。
7z d masmgc.sdk-0.0.1-SNAPSHOT.jar org/slf4j/
这样项目就可以完美的启动了!
五、使用SDK发消息
这里针对各自的项目应该是不尽相同,而且你下载的demo里有发短信的例子(虽然demo里对发短信返回结果的判断是错的...)
因为这篇文档是用简书自带的富文本编辑器写的不是用markdown写的,所以就不粘代码了。
在此说点个人的建议:
写SDK的时候,尽量不要使用框架,能用JDK自带的方法就用JDK自带的,要不然会给使用你SDK的人造成了很多的麻烦。