织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>老古董>『SMS』>

多线程同步+短信猫开发遇到问题

落鹤生 发布于 2010-02-22 22:41 点击:次 
我们的系统需要接收和发送短信功能,用了GSM Modem,就是插手机卡那个猫,买猫的时候附带了java二 次开发包,这类开发包的使用大同小异就不贴了。
TAG:

我们的系统需要接收和发送短信功能,用了GSM Modem,就是插手机卡那个猫,买猫的时候附带了java二 次开发包,这类开发包的使用大同小异就不贴了。

实现方式:

在web服务器(Tomcat)启动时候在某个Servlet中初始化GSMModem这个对象(开发包中的java类,用于接发 短信的类),并将这个对象set到一个叫ReceiveSms的线程类中,启动这个线程接收短信,无限轮询下去。 再将这个GSMModem对象放到ServletContext中,以供其他web请求使用,每当有需要发送短信的web请求时 都会从ServletContext中获取这个对象来发送短信。因为短信猫是接发短信只能处理一件事,所以在接收 短信的线程中用到了synchronized(modem),modem就是这个GSMModem对象,发短信的时候也用到了同步。

起初,一切运行正常,后台轮询可以接收短信,前台web可以发送短信,并不冲突,而且同步有效,轮询 周期为1分钟,如果发送短信用了2分钟,那么接收短信的线程就要等待一会。

可是运行了几天客户反映短 信发不出去了,我测试了一下确实。再测试接收,结果也接收不到了。我重新启动了Tomcat,发现刚刚测 试时候发给短信猫的短信现在全都接收成功了,前台用短信猫发送也可以发送成功!

疑惑:

我的实现方式貌似有效,同步也有效,但这个GSMModem对象是不是假死了?导致读取短信读不到,当重新 启动Tomcat后又重新创建了这个对象,一切恢复正常。那么为什么会这样呢?会出现在哪个环节呢?请大 家帮分析分析! 用过短信猫开发的朋友更要多给点意见,是不是我的实现方式有问题啊!希望大家踊跃回复!
 

以下为回复: 

 1楼 2009-07-01 17:34 xue08161981  [引用] [回复] 
 
关注当中,支持楼主! 
 
 
 2楼 2009-07-01 21:10 rumlee  [引用] [回复] 
 
具体原因很难一下子说的清楚,因为短信猫同一时间是只允许一个线程操作的,在这里这样同步比较麻烦,而且也不好,例如系统正在接收短信,而有个用户想操作发送短信,有可能要等待很长时间,对用户来说,就不是很友好。 我们以前用的解决方式是,发送短信的时候并不是直接立即调用短信猫发送短信,而是往数据库里面插入一条记录,设置一个标志是未发送的。有一个线程一直轮循,这个线程每个轮循里面都各执行一次发送短信和接收短信。这样写就不需要复杂的同步,而对于用户操作来说反馈也比较快。唯独的一个缺点是用户发送的时候并不是立即就知道是发送成功了还是失败了,必须要去查寻数据库的这个表的标志才能够知道。 
 
 
 3楼 2009-07-01 23:20 shan__le  [引用] [回复] 
 
不知道你用的哪个短信猫,我也在写这个短信猫的发送问题,我的思路是将数据存储到数据库中,设置一个发送标记,每次系统自动读取数据库的非发送状态数据,如果有就执行短信猫的发送方法。 我的难题是困在开始了,如何去写自动读取程序?就是每1秒自动执行读取程序,用于读取数据库中的记录用于发送。 希望能够交流一下,我的QQ459542356 现在我系统用的是企信通,就是电信的短信发送程序,挺好用的,但是受控于电信,非常不舒服,我移动的也用过,也是效果不错但是受控,短信猫好处在这里,但是每次发送的时候好像非常慢,这个不知道你是怎么解决的?  
 
 4楼 2009-07-01 23:46 kokobox  [引用] [回复] 
 
你是不是收发的频率过高了 你先一点一点测试,看看多少短信的时候会出现丢失或假延迟现象,每次收发短信的返回值都是什么。 并发测试一下。  
 
 6楼 2009-07-03 10:08 yys79  [引用] [回复] 
 
2,3楼的办法其实是对的,就是一般使用sp的短信平台也是这么搞。不用数据库也可以用mq之类的东西。从你的现象上来看,即使发不出去的时候,程序也应该把at命令写入了猫,应该是缺少个flush之类的操作。重起后,再次连接可能猫自己要flush一下,造成了后来都成功的现象。说不定可能就是某些时候等待时间过长引起的。 
 
 
原文:http://www.soidc.net/discuss/1/090701/15/724908_1.html

(IceWee)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201002/8555.html]
本文出处:soidc.net 作者:IceWee
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容