[发明专利]一种软件模块间的事件路由框架及方法有效
| 申请号: | 201710237608.X | 申请日: | 2017-04-12 |
| 公开(公告)号: | CN107066341B | 公开(公告)日: | 2020-08-04 |
| 发明(设计)人: | 张磊;张文明;陈少杰 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
| 主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F12/02;G06F9/50 |
| 代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 汤财宝 |
| 地址: | 430000 湖北省武汉市东湖开*** | 国省代码: | 湖北;42 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 软件 模块 事件 路由 框架 方法 | ||
1.一种事件路由框架,其特征在于,包括事件订阅层、事件处理层和接口层:
所述事件订阅层与所述接口层相连,用于通过识别软件中各模块标识信息的方式,将所述各模块中与所述标识信息对应的事件存储在所述事件订阅层的订阅者集合中,所述事件订阅层通过注解器来定义路由,具体的实现方法如下所述:
通过定义注解@BindRouter,为了解析@BindRouter的注解,定义了注解的解析类ParseAnnotation,在ParseAnnotation类中通过调用getAnnotation方法获取到解析java源文件中的@BindRouter开头的注解,然后再次调用getValue方法获取到具体注解器的详细信息,然后在通过调用add方法将接收事件订阅到路由框架中;
所述接口层分别与所述事件订阅层和事件处理层相连,用于接收第一模块发送的事件请求,基于所述事件请求中的目标地址信息将所述事件请求发送给第二模块处理;
所述事件处理层与所述接口层相连,用于确认事件请求中的目标地址信息所指向的事件存在于所述路由框架的订阅者集合中;
所述事件处理层还包括:路由机制单元,用于利用事件请求处理优先级机制、事件请求并发处理机制和事件请求缓存机制中的至少一种,进行所述事件请求的处理;
信息发送者ModelA向信息接收者ModelB发送消息的路由机制如下:
信息发送者ModelA通过调用post(url,jsonParam)方法可以向路由框架中投放一个消息事件,其中url表示的是路由框架的订阅者的唯一地址,jsonParam表示需要传递的消息数据,其格式是json格式的数据类型;
信息到达路由框架后路由器首先会通过调用getUrl方法获取到目的地址信息,然后拿到目的地址信息在订阅者集合A中进行寻找,判定订阅者集合A中是否存在需要投放消息的接受者,如果没有找到就不进行消息投放,如果找到了就会将消息投递到信息接收者ModelB中,同时将发送者传递的jsonParam参数传递到信息接收者ModelB中,这样就完成了一次消息的交换过程。
2.如权利要求1所述的框架,其特征在于,所述事件处理层还包括:
删除单元,用于实时监控所述第一模块是否发出退出路由框架的请求;当检测到所述第一模块发出退出路由框架的请求时,建立至少一个新的线程用于删除所述第一模块在所述框架中的相关事件请求信息。
3.如权利要求1所述的框架,其特征在于,所述事件订阅层还包括存储单元,用于将所述各模块中与所述标识信息对应的事件存储以静态变量的形式存储在订阅者集合中。
4.如权利要求2所述的框架,其特征在于,所述路由机制单元进一步用于:根据事件请求的优先级高低,在待处理队列中对所有事件请求进行由高到低的排序,根据排序对所述事件请求进行处理。
5.如权利要求2所述的框架,其特征在于,所述路由机制单元进一步包括用于:
S1,将多个事件请求设计为一个同步队列,在所述同步队列内设置一个锁钥对;
S2,当事件请求到达所述同步队列后,首先搜寻所述同步队列的钥匙:当成功获取钥匙时,所述同步队列将所述事件请求添加到待处理队列中,当获取钥匙失败时,将所述事件请求加入缓存队列中;
S3,通过不断触发预设事件的方式使得所述事件请求再次进入所述同步队列执行所述S2,直至该事件请求成功获取所述同步队列的钥匙。
6.如权利要求2所述的框架,其特征在于,所述路由机制单元进一步用于:将所述事件处理层待处理的所有目标事件添加至同一个缓存队列;确认新的事件请求存在于所述缓存队列中,将所述缓存队列中的所述新的事件请求再次投递到消息队列中;所述缓存队列能够存储的目标事件的上限为n,其中n>0。
7.如权利要求5所述的框架,其特征在于,所述删除单元进一步用于删除所述待处理队列中所述第一模块发送的所有事件请求和所述同步队列中所述第一模块发送的所有事件请求。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710237608.X/1.html,转载请声明来源钻瓜专利网。





