[发明专利]一种基于java的有序多播方法、装置及应用在审
申请号: | 202211530916.9 | 申请日: | 2022-12-01 |
公开(公告)号: | CN115857892A | 公开(公告)日: | 2023-03-28 |
发明(设计)人: | 李圣权;王伟;黄河 | 申请(专利权)人: | 城云科技(中国)有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F9/448 |
代理公司: | 杭州汇和信专利代理有限公司 33475 | 代理人: | 吴琰 |
地址: | 310052 浙江省杭州市滨江区长*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 java 有序 方法 装置 应用 | ||
本申请提出了一种基于java的有序多播方法、装置及应用,包括以下步骤:构建注册有事件发送方、事件接收方的事件总线处理中心类,所述事件发送方运行父事件,所述事件接收方包含与父事件对应的至少一子事件;在每一子事件的注解中写入对应的父事件名称以及子事件执行顺序,并将所述父事件名称、子事件名称以及子事件执行顺序存储到所述事件总线处理中心类的双层ConcurrentHashmap中;当所述父事件执行完毕时,事件总线处理中心类根据子事件执行顺序执行子事件。本方案通过构建事件总线处理中心类来降低父事件与子事件的耦合,并使用双层ConcurrentHashmap来控制事件总线处理中心类顺序执行子事件。
技术领域
本申请涉及信息技术领域,特别是涉及一种基于java的有序多播方法、装置及应用。
背景技术
多播为一个点对多个点的进行通讯的方法,在大型的java系统中,通常架构分为不同的模块,比如订单模块、库存模块等,不同的模块又包含各种服务,而这些模块以及服务通常是由不同的软件工程师来分工开发,不同的服务之间存在各种依赖关系,比如在一个购买产品的系统中,包括下单服务、减库存服务、短信通知服务,当下单服务执行完成后,需要通知减库存服务来把相应的商品数量减一,并通知短信通知服务来进行购买成功的短信通知,从而完成一次多播,在实际的开发中,通常是在下单服务的代码块中调用减库存服务和短信通知服务,当下单服务执行完成后,通过调用减库存服务来进行商品数量减一的操作,通过调用短信通知服务来进行短信通知,这样操作就使得下单服务、减库存服务、短信通知服务之间耦合,当下单服务的代码进行更改时,减库存服务以及短信通知服务的代码往往也需要进行变动。
另外,现有技术中存在一种通过中间件来进行多播的方法,如将RabbitMq作为中间件,下单服务将成功下单的消息发送到RabbitMq中,减库存服务和短信通知服务通过对RabbitMq进行监听,通过监听RabbitMq中间件的消息来获取成功下单这个信息,再将对应的商品数量减一并发送短信通知,通过中间件虽然可以达成解耦的目的,但是中间件需要单独进行部署和维护,增加了项目成本和系统复杂性,此外,无论是否使用中间件进行多播操作,都无法控制各个服务之间的执行顺序。
因此,亟需一种能够降低各个服务之间的耦合且不依赖中间件的有序多播方法。
发明内容
本申请实施例提供了一种基于java的有序多播方法、装置及应用,可以通过增加一个事件总线处理中心类对各个服务之间进行解耦,且使用双层ConcurrentHashmap来控制各个服务之间执行的顺序,降低服务之间耦合性、不依赖中间件的同时还可有序通知下游服务执行。
第一方面,本申请实施例提供了一种基于java的有序多播方法,所述方法包括:
构建注册有事件发送方、事件接收方的事件总线处理中心类,所述事件发送方运行父事件,所述事件接收方包含与父事件对应的至少一子事件;
在每一子事件的注解中写入对应的父事件名称以及子事件执行顺序,并将所述父事件名称、子事件名称以及子事件执行顺序存储到所述事件总线处理中心类的双层ConcurrentHashmap中;
当所述父事件执行完毕时,将执行完毕通知发送给所述事件总线处理中心类,所述执行完毕通知包含父事件名称,所述事件总线处理中心类根据所述父事件名称在所述双层ConcurrentHashmap中找到对应的子事件名称,并根据每一子事件执行顺序执行所述子事件名称对应的子事件。
第二方面,本申请实施例提供了一种基于java的有序多播装置,包括:
构建模块:构建注册有事件发送方、事件接收方的事件总线处理中心类,所述事件发送方运行父事件,所述事件接收方包含与父事件对应的至少一子事件;
部署模块:在每一子事件的注解中写入对应的父事件名称以及子事件执行顺序,并将所述父事件名称、子事件名称以及子事件执行顺序存储到所述事件总线处理中心类的双层ConcurrentHashmap中;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于城云科技(中国)有限公司,未经城云科技(中国)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211530916.9/2.html,转载请声明来源钻瓜专利网。