System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种领域事件驱动异步传输数据方法技术_技高网

一种领域事件驱动异步传输数据方法技术

技术编号:40366947 阅读:17 留言:0更新日期:2024-02-20 22:13
本发明专利技术特别涉及一种领域事件驱动异步传输数据方法。该领域事件驱动异步传输数据方法,将系统中发生的每一件事情,都以事件形式捕获,通过领域驱动设计模式对领域事件进行建模;对聚合进行命令操作时,聚合本身将领域事件发布给订阅方处理;领域事件发布后,订阅方先存储事件,然后再将其转发到远程订阅方,或不经存储,直接转发给远程订阅方;通过事件监听器监听发布的领域事件,进行业务数据的异步传输,订阅者进行数据业务处理,进行数据清洗或者根据具体业务进行数据存储/数据分析。该领域事件驱动异步传输数据方法,数据源扩展性强,灵活可靠,且不受网络因素制约,能够在复杂的业务模式下灵活的传输数据,大大提高了程序的方便性。

【技术实现步骤摘要】

本专利技术涉及领域驱动设计,特别涉及一种领域事件驱动异步传输数据方法


技术介绍

1、随着系统业务复杂性越来越高,对数据的可扩展性和传输性要求也越来越高。比如一个危货运输代理商要入驻一个危货运输企业,就需要把代理商下的所有基础数据同步给这个企业。包括账号关系、设备类型与企业关系、作业活动与企业关系、安全检查项目、部门组织架构、岗位关系等等。这种应用场景下,对与业务数据的可扩展性、传输速率等性能要求比较高。

2、领域事件(domain events)是领域驱动设计(domain driven design,简称ddd)中的一个概念,用于捕获我们所建模的领域中所发生过的事情。比如:“如果发生……,则……”,“当做完……的时候,请通知……”(这里的通知本身并不能构成一个事件,而只是表明需要向外界发出通知)。在这些场景中,如果发生某种事件后,会触发进一步的操作,那这个事件可能就是领域事件。由于领域事件需要发布到外部系统,比如发布到另一个限界上下文。由于这样的事件由订阅方处理,它将对本地和远程上下文产生深远的影响。

3、领域事件本身也作为通用语言(ubiquitous language)的一部分,成为包括领域专家在内的所有项目成员的交流用语。首先,从业务逻辑来说该事件关系到整个流程的成功或者失败;同时又将触发后续子流程。而对于业务方来说,该事件也是一个标志性的里程碑,代表自己的数据同步到自己管辖下的子机构的身上。所以通常来说,一个领域事件具有以下几个特征:较高的业务价值,有助于形成完整的业务闭环,将导致进一步的业务操作。

4、还需要强调的是,领域事件具有明确的边界。本地限界上下文中的其他聚合实例便可以通过领域事件的方式同步,用于使远程依赖系统与本地系统保持一致。解耦本地系统和远程系统还有助于提高双方协作服务的可伸缩性。

5、为了解决项目前期不可明确的复杂业务数据的传输以及之后的扩展复用问题,本专利技术提出了一种领域事件驱动异步传输数据方法。


技术实现思路

1、本专利技术为了弥补现有技术的缺陷,提供了一种简单高效的领域事件驱动异步传输数据方法。

2、本专利技术是通过如下技术方案实现的:

3、一种领域事件驱动异步传输数据方法,其特征在于:包括以下步骤:

4、步骤s1:创建领域事件

5、将系统中发生的每一件事情,都以事件形式捕获,通过领域驱动设计模式对领域事件进行建模;

6、步骤s2:事件发布

7、对聚合进行命令操作时,聚合本身将领域事件发布给订阅方处理;

8、步骤s3:事件订阅

9、领域事件发布后,订阅方先存储事件,然后再将其转发到远程订阅方,或不经存储,直接转发给远程订阅方;

10、步骤s4:业务处理

11、通过事件监听器监听发布的领域事件,进行业务数据的异步传输,订阅者进行数据业务处理,进行数据清洗或者根据具体业务进行数据存储/数据分析。

12、所述步骤s1中,在创建领域事件时,领域事件本身是不变的(immutable);同时领域事件携带与事件发生时相关的上下文数据信息,但是并不携带整个聚合根的状态数据。

13、所述步骤s1中,根据业务和逻辑确定好关联的实体和值对象,创建一个领域事件,并继承applicationevent(应用程序事件)事件。

14、为了维护领域模型的独立性和数据一致性,所述步骤s2中,事件发布完成后,发布方不必关心后续订阅方事件处理是否成功,直接实现领域模型的解耦。

15、所述步骤s2中,在领域模型映射到微服务架构时,领域事件解耦微服务,微服务间的数据不必要求强一致性,而是基于事件的最终一致性。

16、所述步骤s2中,通过事件发布器eventpublisher注入applicationcontex(应用程序上下文)的publishevent(发布事件)方法发布领域事件。

17、所述步骤s4中,配置异步任务,并启动线程池执行异步任务;添加@async注解,调用异步线程,订阅者采用addedeventlistener()方法实现applicationlistener接口,用于监听领域事件,并重写onapplicationevent方法。

18、一种领域事件驱动异步传输数据设备,其特征在于:包括存储器和处理器;所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序时实现如上所述的方法步骤。

19、一种可读存储介质,其特征在于:所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法步骤。

20、本专利技术的有益效果是:该领域事件驱动异步传输数据方法,数据源扩展性强,灵活可靠,且不受网络因素制约,能够在复杂的业务模式下灵活的传输数据,大大提高了程序的方便性。

本文档来自技高网...

【技术保护点】

1.一种领域事件驱动异步传输数据方法,其特征在于:包括以下步骤:

2.根据权利要求1所述的领域事件驱动异步传输数据方法,其特征在于:所述步骤S1中,在创建领域事件时,领域事件本身是不变的;同时领域事件携带与事件发生时相关的上下文数据信息,但是并不携带整个聚合根的状态数据。

3.根据权利要求2所述的领域事件驱动异步传输数据方法,其特征在于:所述步骤S1中,根据业务和逻辑确定好关联的实体和值对象,创建一个领域事件,并继承ApplicationEvent事件。

4.根据权利要求1所述的领域事件驱动异步传输数据方法,其特征在于:为了维护领域模型的独立性和数据一致性,所述步骤S2中,事件发布完成后,发布方不必关心后续订阅方事件处理是否成功,直接实现领域模型的解耦。

5.根据权利要求1所述的领域事件驱动异步传输数据方法,其特征在于:所述步骤S2中,在领域模型映射到微服务架构时,领域事件解耦微服务,微服务间的数据不必要求强一致性,而是基于事件的最终一致性。

6.根据权利要求3所述的领域事件驱动异步传输数据方法,其特征在于:所述步骤S2中,通过事件发布器EventPublisher注入ApplicationContex的publishEvent方法发布领域事件。

7.根据权利要求6所述的领域事件驱动异步传输数据方法,其特征在于:所述步骤S4中,配置异步任务,并启动线程池执行异步任务;添加@Async注解,调用异步线程,订阅者采用AddedEventListener()方法实现ApplicationListener接口,用于监听领域事件,并重写onApplicationEvent方法。

8.一种领域事件驱动异步传输数据设备,其特征在于:包括存储器和处理器;所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序时实现如权利要求1至7任意一项所述的方法步骤。

9.一种可读存储介质,其特征在于:所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任意一项所述的方法步骤。

...

【技术特征摘要】

1.一种领域事件驱动异步传输数据方法,其特征在于:包括以下步骤:

2.根据权利要求1所述的领域事件驱动异步传输数据方法,其特征在于:所述步骤s1中,在创建领域事件时,领域事件本身是不变的;同时领域事件携带与事件发生时相关的上下文数据信息,但是并不携带整个聚合根的状态数据。

3.根据权利要求2所述的领域事件驱动异步传输数据方法,其特征在于:所述步骤s1中,根据业务和逻辑确定好关联的实体和值对象,创建一个领域事件,并继承applicationevent事件。

4.根据权利要求1所述的领域事件驱动异步传输数据方法,其特征在于:为了维护领域模型的独立性和数据一致性,所述步骤s2中,事件发布完成后,发布方不必关心后续订阅方事件处理是否成功,直接实现领域模型的解耦。

5.根据权利要求1所述的领域事件驱动异步传输数据方法,其特征在于:所述步骤s2中,在领域模型映射到微服务架构时,领域事件解耦微服务,微服务间的数据不必要求强一致性,而是基于事件的最终一致性。

【专利技术属性】
技术研发人员:李承林徐士强王禹博
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1