本技术涉及微服务,特别是涉及一种事件驱动装置及方法。
背景技术:
1、在微服务技术领域,通常基于事件驱动架构来实现多方交互,和多方交互通常需要在消息队列的作用下传播事件来实现。由于事件和消息队列需要接收的消息在格式上存在区别,因此在相关技术中通常通过开发人员自行对事件进行映射,使得映射后的事件能够被发送至消息队列,以此来实现多方交互。如此由于每个事件均需要开发人员进行映射,将导致事件驱动效率低下。
2、由此,如何提高事件驱动效率是本领域技术人员关注的重点问题。
技术实现思路
1、基于上述问题,本技术提供了一种事件驱动装置及方法,以提高事件驱动效率。
2、本技术实施例公开了如下技术方案:
3、本技术第一方面提供了一种事件驱动装置。该事件驱动装置包括事件发送模块、事件订阅模块和事件映射模块;
4、所述事件发送模块,用于将客户端提交的待处理事件发送至所述事件映射模块,和将所述事件映射模块返回的所述待处理事件对应的待处理消息发送至目标消息队列;
5、所述事件订阅模块,用于将从所述目标消息队列中订阅的所述待处理消息发送至所述事件映射模块,和将所述事件映射模块返回的所述待处理消息对应的所述待处理事件发送至事件消费端,以使所述事件消费端对所述待处理事件执行事件处理操作;
6、所述事件映射模块,用于基于事件映射规则集对所述待处理事件进行映射处理,获得返回至所述事件发送模块的所述待处理事件对应的待处理消息,和用于基于所述事件映射规则集对所述待处理消息进行映射处理,获得返回至所述事件订阅模块的所述待处理消息对应的所述待处理事件。
7、在一种可实现的实施方式中,所述事件发送模块,具体用于将消息队列类型和客户端提交的待处理事件发送至所述事件映射模块,其中所述消息队列类型用于指示将发送所述待处理事件至消息队列的消息队列类型,所述消息队列类型包括rabbitmq消息队列和kafaka消息队列。
8、在一种可实现的实施方式中,所述事件映射模块包括事件识别单元、规则提取单元和事件映射单元;
9、所述事件识别单元,用于对所述待处理事件进行事件识别,获得所述待处理事件对应的事件基类;
10、所述规则提取单元,用于根据所述事件基类对事件映射规则集进行规则提取,获得所述事件映射规则集中与所述事件基类对应的目标事件映射规则;
11、所述事件映射单元,用于基于所述目标事件映射规则对所述待处理事件进行映射处理,获得返回至所述事件发送模块的所述待处理事件对应的待处理消息,和用于基于所述目标事件映射规则对所述待处理消息进行映射处理,获得返回至所述事件订阅模块的所述待处理消息对应的所述待处理事件。
12、在一种可实现的实施方式中,所述事件映射规则集包括针对于所述rabbitmq消息队列的第一映射规则子集和针对于所述kafaka消息队列的第二映射规则子集;
13、所述规则提取单元,具体用于若所述将发送所述待处理事件至消息队列的消息队列类型为所述rabbitmq消息队列,则根据所述事件基类对所述第一映射规则子集进行规则提取,获得所述第一映射规则子集中与所述事件基类对应的目标事件映射规则;
14、或者所述规则提取单元,具体用于若所述将发送所述待处理事件至消息队列的消息队列类型为所述kafaka消息队列,则根据所述事件基类对所述第二映射规则子集进行规则提取,获得所述第二映射规则子集中与所述事件基类对应的目标事件映射规则。
15、在一种可实现的实施方式中,所述事件发送模块,还用于根据所述待处理消息对队列资源信息进行注册处理,获得注册后的队列资源信息。
16、在一种可实现的实施方式中,所述事件订阅模块,具体用于基于事件订阅注解从所述目标消息队列中订阅所述待处理消息,并将所述待处理消息发送至所述事件映射模块。
17、在一种可实现的实施方式中,所述事件发送模块,还用于将所述待处理事件存储至所述事件发送模块对应的第一数据库;
18、所述事件订阅模块,还用于将所述待处理事件存储至所述事件订阅模块对应的第二数据库。
19、在一种可实现的实施方式中,所述事件驱动装置还包括事件清理模块;
20、所述事件清理模块,用于删除所述第一数据库中处于预设时段内的待处理事件,和删除所述第二数据库中处于所述预设时段内的待处理事件。
21、在一种可实现的实施方式中,所述事件发送模块,具体用于基于发送同步器将客户端提交的待处理事件实时发送至所述事件映射模块,和基于发送补偿器将所述事件映射模块返回的所述待处理事件对应的待处理消息补偿发送至消息队列。
22、本技术第二方面提供了一种事件驱动方法。该事件驱动方法应用于第一方面所述的事件驱动装置,所述事件驱动装置包括事件发送模块、事件订阅模块和事件映射模块,所述事件驱动方法包括:
23、通过所述事件发送模块将客户端提交的待处理事件发送至所述事件映射模块,和将所述事件映射模块返回的所述待处理事件对应的待处理消息发送至目标消息队列;
24、通过所述事件订阅模块将从所述目标消息队列中订阅的所述待处理消息发送至所述事件映射模块,和将所述事件映射模块返回的所述待处理消息对应的所述待处理事件发送至事件消费端,以使所述事件消费端对所述待处理事件执行事件处理操作;
25、通过所述事件映射模块基于事件映射规则集对所述待处理事件进行映射处理,获得返回至所述事件发送模块的所述待处理事件对应的待处理消息,和用于基于所述事件映射规则集对所述待处理消息进行映射处理,获得返回至所述事件订阅模块的所述待处理消息对应的所述待处理事件。
26、相较于现有技术,本技术具有以下有益效果:
27、在本技术中提出的事件驱动装置包括事件发送模块、事件订阅模块和事件映射模块。具体的,事件发送模块,用于将客户端提交的待处理事件发送至事件映射模块,和将事件映射模块返回的待处理事件对应的待处理消息发送至目标消息队列;事件订阅模块,用于将从目标消息队列中订阅的待处理消息发送至事件映射模块,和将事件映射模块返回的待处理消息对应的待处理事件发送至事件消费端,以使事件消费端对待处理事件执行事件处理操作;事件映射模块,用于基于事件映射规则集对待处理事件进行映射处理,获得返回至事件发送模块的待处理事件对应的待处理消息,和用于基于事件映射规则集对待处理消息进行映射处理,获得返回至事件订阅模块的待处理消息对应的待处理事件。
28、可见,在本技术中事件发送模块在发送待处理事件之前,可以将该待处理事件提前发送至事件映射模块,使得事件映射模块能够在事件映射规则集的作用下自动将待处理事件映射为可以被发送至消息队列的待处理消息,以及事件订阅模块能够从消息队列中订阅到待处理消息,和可以在事件映射模块的作用下获得待处理事件,以此完成事件驱动,也使得后续能够实现事件消费端对待处理事件的处理。如此,实现了待处理事件的自动映射,降低了开发人员的上手难度,从而能够提高事件驱动效率。