读书人

cmpp3兑现想法

发布时间: 2012-11-19 10:18:51 作者: rapoo

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




读书人网 >软件架构设计

热点推荐