2008-04-10
cmpp3实现想法
为实现应用分离,分为二部分实现,见下图
第一部分实现设想:
一、滑动窗口实现:
设全局变量waitMap(Map)、todoMap;
设:n=waitMap.size();
1、发送短信,先判断如果小于窗口大小,则直接发送、写入waitMap;如果大于窗口大小,则写入todoList,并且唤醒下面线程;
2、线程1:后台启一个线程,判断n如果大于窗口大小或n==0,则进行等待状态;如果小于则从todoMap中获取一条消息进行消息发送、并从todoMap中去掉此消息,加入到waitMap
消息中;
3、收到一个返回时,从waitMap中去掉此消息,并且唤醒上面线程。
其实就是生产者与消费者的问题。。。
二、未收到重收问题:
上述waitMap中增加最近发送时间、重发次数。
线程2:启动一个线程(或者几秒跑一次?),查询waitMap中时间与当前时间差T秒则进行重发,发现重发次数大于等于3次,则从waitMap中去除,写入DB中。
三、关于发送发送链路检测包
发送完一条短信后启动一个Timer,遇到下次发送将旧Timer干掉,重新启动一个Timer
第一部分实现设想:
一、滑动窗口实现:
设全局变量waitMap(Map)、todoMap;
设:n=waitMap.size();
1、发送短信,先判断如果小于窗口大小,则直接发送、写入waitMap;如果大于窗口大小,则写入todoList,并且唤醒下面线程;
2、线程1:后台启一个线程,判断n如果大于窗口大小或n==0,则进行等待状态;如果小于则从todoMap中获取一条消息进行消息发送、并从todoMap中去掉此消息,加入到waitMap
消息中;
3、收到一个返回时,从waitMap中去掉此消息,并且唤醒上面线程。
其实就是生产者与消费者的问题。。。
二、未收到重收问题:
上述waitMap中增加最近发送时间、重发次数。
线程2:启动一个线程(或者几秒跑一次?),查询waitMap中时间与当前时间差T秒则进行重发,发现重发次数大于等于3次,则从waitMap中去除,写入DB中。
三、关于发送发送链路检测包
发送完一条短信后启动一个Timer,遇到下次发送将旧Timer干掉,重新启动一个Timer
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 32435 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
PreparedStatement防注入
上面说的是只是针对用jdbc运行sql时怕出错的一种解决方式, 针对楼上说的, ...
-- by qiuyuanshan -
PreparedStatement防注入
确定不需要再进行特殊字符处理? 如果用户输入类似<td></td>这 ...
-- by hilliate -
WEB移植时可能出现的问题
不好意思,就碰到一种情况,还没碰到第二种情况。。。
-- by qiuyuanshan -
WEB移植时可能出现的问题
二是什么,我现在也碰到这个问题啊,我已经用1.4的编译了,还是不行啊
-- by sunqi -
websphere下部署servlet ...
是为了热布署时不停机。。。。
-- by 抛出异常的爱






评论排行榜