CN115437804A - 消息服务处理方法、装置、设备及存储介质 - Google Patents
消息服务处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115437804A CN115437804A CN202211008331.0A CN202211008331A CN115437804A CN 115437804 A CN115437804 A CN 115437804A CN 202211008331 A CN202211008331 A CN 202211008331A CN 115437804 A CN115437804 A CN 115437804A
- Authority
- CN
- China
- Prior art keywords
- event
- subscription
- message service
- events
- subscriber
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及通讯技术领域,尤其涉及一种消息服务处理方法、装置、设备及存储介质,该方法包括:在接收到订阅事件时,获取订阅事件对应的订阅事件方法;将订阅事件方法可接收事件类型添加至事件类型链表中,并根据事件类型的优先级对事件类型链表进行排序;根据排序结果将当前需要发送的事件添加至对应的事件队列中,并通过轮询操作对事件队列中的事件进行发送。由于本发明先将订阅事件方法根据事件类型的优先级进行排序,再根据排序结果按照轮询的操作进行事件发送,相比于现有的在接收到事件时立即进行处理,导致较为紧急的事件处理不及时,本发明能及时处理优先级较高的事件,提升处理效率。
Description
技术领域
本发明涉及通讯技术领域,尤其涉及一种消息服务处理方法、装置、设备及存储介质。
背景技术
目前,随着网络技术的发展,网络应用的种类越来越多,网络应用中客户端通常使用远程过程调用(Remote Procedure Call,RPC)协议向远端服务器请求服务。
但在现有的RPC调用技术中,服务端在接收到信息后立即开始处理。当需要处理大量数据时,服务器的处理能力有限,并且RPC是阻塞型,当调用者远程调用服务时需要阻塞等待调用结果。增加了服务器的负载,降低了系统的工作能力,同时还可能造成调用信息的丢失。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供了一种消息服务处理方法、装置、设备及存储介质,旨在解决现有技术中当需要处理大量数据时,服务器因会立即处理所有数据导致效率较低的技术问题。
为实现上述目的,本发明提供了一种消息服务处理方法,所述方法包括以下步骤:
在接收到订阅事件时,获取所述订阅事件对应的订阅事件方法;
将所述订阅事件方法可接收事件类型添加至事件类型链表中,并根据事件类型的优先级对所述事件类型链表进行排序;
根据排序结果将当前需要发送的事件添加至对应的事件队列中,并通过轮询操作对所述事件队列中的事件进行发送。
可选地,所述在接收到订阅事件时,获取所述订阅事件对应的订阅事件方法的步骤,包括:
在接收到订阅事件时,根据所述订阅事件在缓存中查找是否存在对应的订阅事件方法;
若是,根据所述订阅事件获取对应的订阅事件方法。
可选地,所述在接收到订阅事件时,根据所述订阅事件在缓存中查找是否存在对应的订阅事件方法的步骤之后,还包括:
若否,根据所述订阅事件获取对应的索引方式标识;
根据所述索引方式标识从索引类中选取对应的订阅事件方法;
相应地,所述若否,根据所述订阅事件获取对应的索引方式标识的步骤之前,还包括:
根据订阅事件方法生成对应的索引标识符,并将所述索引标识符和对应的订阅事件方法保存至索引类中。
可选地,所述根据排序结果将当前需要发送的事件添加至对应的事件队列中,并通过轮询操作对所述事件队列中的事件进行发送的步骤,包括:
根据排序结果将当前需要发送的事件添加至所述事件队列中;
根据事件类型从所述事件类型链表中获取对应的订阅者;
通过轮询操作将所述事件队列中的事件发送至所述订阅者。
可选地,所述根据排序结果将当前需要发送的事件添加至所述事件队列中的步骤之后,还包括:
获取所述事件队列的当前线程类型;
相应地,所述通过轮询操作将所述事件队列中的事件发送至所述订阅者的步骤之后,还包括:
根据所述订阅事件方法获取线程模式,并根据所述当前线程类型将线程模式发送至所述订阅者,以使所述订阅者在接收到所述事件后根据所述线程模式进行事件处理。
可选地,所述根据排序结果将当前需要发送的事件添加至所述事件队列中的步骤之前,还包括:
根据所述事件类型判断所述订阅事件是否为粘性事件;
若是,则将所述事件类型和所述订阅事件方法保存至粘性事件集合中;
相应地,所述在接收到订阅事件时,获取所述订阅事件对应的订阅事件方法的步骤,包括:
在接收到订阅事件时,根据所述订阅事件的事件类型判断是否为粘性事件;
若是,则根据所述订阅事件从所述粘性事件集合中获取对应的订阅事件方法。
可选地,所述将所述订阅事件方法可接收事件类型添加至事件类型链表中,并根据事件类型的优先级对所述事件类型链表进行排序的步骤之后,还包括:
将所述订阅事件对应的订阅者和所述事件类型添加至订阅者列表中;
相应地,所述根据排序结果将当前需要发送的事件添加至对应的事件队列中,并通过轮询操作对所述事件队列中的事件进行发送的步骤之后,还包括:
在接收待取消订阅事件时,根据所述待取消订阅事件对所述事件类型链中对应的事件类型进行删除。
此外,为实现上述目的,本发明还提出一种消息服务处理装置,所述装置包括:
方法获取模块,用于在接收到订阅事件时,获取所述订阅事件对应的订阅事件方法;
链表排序模块,用于将所述订阅事件方法可接收事件类型添加至事件类型链表中,并根据事件类型的优先级对所述事件类型链表进行排序;
事件发送模块,用于根据排序结果将当前需要发送的事件添加至对应的事件队列中,并通过轮询操作对所述事件队列中的事件进行发送。
此外,为实现上述目的,本发明还提出一种消息服务处理设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的消息服务处理程序,所述消息服务处理程序配置为实现如上文所述的消息服务处理方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有消息服务处理程序,所述消息服务处理程序被处理器执行时实现如上文所述的消息服务处理方法的步骤。
本发明是通过在接收到订阅事件时,获取所述订阅事件对应的订阅事件方法;将所述订阅事件方法可接收事件类型添加至事件类型链表中,并根据事件类型的优先级对所述事件类型链表进行排序;根据排序结果将当前需要发送的事件添加至对应的事件队列中,并通过轮询操作对所述事件队列中的事件进行发送。由于本发明先将订阅事件方法根据事件类型的优先级进行排序,再根据排序结果按照轮询的操作进行事件发送,相比于现有的在接收到事件时立即进行处理,且会同时处理所有事件,导致较为紧急的事件处理不及时,本发明能及时处理优先级较高的事件,提升处理效率。
附图说明
图1为本发明实施例方案涉及的硬件运行环境的消息服务处理设备结构示意图;
图2为本发明消息服务处理方法第一实施例的流程示意图;
图3为本发明消息服务处理方法第二实施例的流程示意图;
图4为本发明消息服务处理方法第三实施例的流程示意图;
图5为本发明消息服务处理装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的消息服务处理设备结构示意图。
如图1所示,该消息服务处理设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(Wireless-Fidelity,Wi-Fi)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM),也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对消息服务处理设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及消息服务处理程序。
在图1所示的消息服务处理设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明消息服务处理设备中的处理器1001、存储器1005可以设置在消息服务处理设备中,所述消息服务处理设备通过处理器1001调用存储器1005中存储的消息服务处理程序,并执行本发明实施例提供的消息服务处理方法。
本发明实施例提供了一种消息服务处理方法,参考图2,图2为本发明消息服务处理方法第一实施例的流程示意图。
本实施例中,所述消息服务处理方法包括以下步骤:
步骤S10:在接收到订阅事件时,获取所述订阅事件对应的订阅事件方法。
需要说明的是,本实施例方法可以是应用在服务端接收用户端需求进行消息处理的场景中,或者其它需要对消息进行处理的场景中。本实施例的执行主体可以是具有数据处理、网络通信以及程序运行功能的消息服务处理设备,例如电脑、服务器等,或者是其它能够实现如同或相似功能的设备。此处以上述消息服务处理设备(以下简称设备)对本实施例和下述各实施例进行具体说明。
可理解的是,本实施例是基于事件总线框架实现,在事件总线框架中,主要包括事件(即上述订阅事件)、订阅者和发布者,事件可以是任意类型的事件,发布者可以在事件总线中发布任意事件,事件以广播的方式在事件总线中传播,订阅者根据需求在事件总线中接收所需的事件,并对所需的事件进行处理,处理的方式(即上述订阅事件方法)可根据实际情况自行设置,本实施例对此不加以限制。
应理解的是,在订阅者进行订阅事件之前,订阅者需创建实例,创建方式可以是使用双锁单例模式,上述双锁单例模式可通过进行两次非空检测,通过加锁进行同步控制,进而能保证数据安全,在上述创建完成后,设备可在事件总线上对订阅者进行注册操作,进而可在事件发布至事件总线中时通知订阅者,以便后续订阅者接收事件。
需要强调的是,在上述设备进行注册的过程中,上述设备可先获取订阅者对应的注册类class,其中class是一种数据类型,根据注册类class可查找订阅者所有订阅事件方法的列表。
进一步地,为了提升查找的效率,上述步骤S10包括:
步骤S11:在接收到订阅事件时,根据所述订阅事件在缓存中查找是否存在对应的订阅事件方法。
步骤S12:若是,根据所述订阅事件获取对应的订阅事件方法。
需要说明的是,上述缓存中存储有历史订阅事件方法,上述设备可将之前所有的订阅事件方法保存至缓存中,待后续进行查找时,可直接从缓存中根据class查找得到对应的订阅事件方法,并将查找到的订阅事件方法保存至订阅事件方法列表中,为了便于后续说明,在此将上述订阅事件方法列表记作List<SubscriberMethod>。
更进一步地,若设备在上述缓存中未查找到对应的订阅事件方法,则可以选择使用索引的方式,其具体步骤为上述步骤S11之后,还包括:
步骤S13:若否,根据所述订阅事件获取对应的索引方式标识;
步骤S14:根据所述索引方式标识从索引类中选取对应的订阅事件方法;
相应地,上述步骤S13之前,还包括:
步骤S013:根据订阅事件方法生成对应的索引标识符,并将所述索引标识符和对应的订阅事件方法保存至索引类中。
可理解的是,上述设备可对每一个历史订阅事件方法生成一个索引标识符,并将索引标识符和对应的订阅事件方法保存至索引类中,在上述设备使用索引的方式进行查找时,可根据上述class获取对应订阅事件方法的索引标识符,并根据索引标识符在索引类中进行查找,将查找到的订阅事件方法保存至上述List<SubscriberMethod>中,并将List<SubscriberMethod>保存至缓存中,以便后续可直接从缓存中进行查找。
作为本实施例的另一种实现方式,若上述设备不使用索引的方式,则可通过反射解析获得订阅事件方法,并将解析后的订阅事件方法保存至上述List<SubscriberMethod>中,同时将List<SubscriberMethod>保存至缓存中,以便后续可直接从缓存中进行查找。
应理解的是,在缓存中未查找到对应的订阅事件方法时,选用使用索引的方式还是使用反射解析的方式可根据实际情况自行设置,本实施例对此不加以限制。
在具体实现中,上述设备可根据订阅者的订阅事件在缓存中进行查找,若查找到对应的订阅事件方法,则将查找到的所有订阅事件方法保存至订阅事件方法列表中;若在缓存中未查找到对应的订阅事件方法,则上述设备可根据实际设置选择使用索引的方式或反射解析的方式,若使用索引的方式,则上述设备在使用之前可对每一个历史订阅事件方法生成一个索引标识符,再根据索引标识符查找到对应的订阅事件方法,并将查找到的订阅事件方法保存至订阅事件方法列表中,同时将订阅事件方法列表保存至上述缓存中,以便后续可直接从缓存中查找,缩短查找时间;若使用反射解析的方式,则上述设备可通过反射解析获得订阅事件方法,并将解析后的订阅事件方法保存至上述订阅事件方法列表中,同时将订阅事件方法列表保存至缓存中,以便后续可直接从缓存中进行查找,缩短查找时间,进而完成订阅者的所有订阅事件方法的查找。
步骤S20:将所述订阅事件方法可接收事件类型添加至事件类型链表中,并根据事件类型的优先级对所述事件类型链表进行排序。
需要说明的是,上述事件类型链表中存储有订阅事件方法可接收的事件类型和对应的订阅者集合,即某一个事件类型可被哪些订阅者订阅,为了便于后续说明,我们将事件类型链表记作subscriptionByEventType。
可理解的是,上述各事件类型中均对应设置有一个优先级,对某一个订阅事件方法进行排序时,可根据对应的事件类型的优先级进行排序,若该事件类型的优先级较高,则对应的订阅事件方法将被排序在前面,优先级较低则对应的订阅事件方法排至后面。
在具体实现中,上述设备可将订阅事件方法可接收的事件类型和对应的订阅者集合保存至事件类型链表中,并根据事件类型的优先级对事件类型链表中的订阅事件方法进行排序。
步骤S30:根据排序结果将当前需要发送的事件添加至对应的事件队列中,并通过轮询操作对所述事件队列中的事件进行发送。
应理解的是,上述设备在完成订阅者注册的过程之后则需将对应的事件进行发送,上述当前需要发送的事件与上述订阅者的订阅事件相对应,上述事件对列可设置有多个,不同的事件队列可发送不同的事件。
本实施例上述设备可根据订阅者的订阅事件在缓存中进行查找,若查找到对应的订阅事件方法,则将查找到的所有订阅事件方法保存至订阅事件方法列表中;若在缓存中未查找到对应的订阅事件方法,则上述设备可根据实际设置选择使用索引的方式或反射解析的方式,若使用索引的方式,则上述设备在使用之前可对每一个历史订阅事件方法生成一个索引标识符,再根据索引标识符查找到对应的订阅事件方法,并将查找到的订阅事件方法保存至订阅事件方法列表中,同时将订阅事件方法列表保存至上述缓存中,以便后续可直接从缓存中查找,缩短查找时间;若使用反射解析的方式,则上述设备可通过反射解析订阅事件方法,并将解析后的订阅事件方法保存至上述订阅事件方法列表中,同时将订阅事件方法列表保存至缓存中,以便后续可直接从缓存中进行查找,缩短查找时间,进而完成订阅者的所有订阅事件方法的查找;将查找到的订阅事件方法可接收的事件类型和对应的订阅者集合保存至事件类型链表中,并根据事件类型的优先级对事件类型链表中的订阅事件方法进行排序;再根据排序结果将需要发送的事件添加至对应的事件队列中,并通过轮询操作将事件发送至对应的订阅者。相比于现有的在接收到事件时立即进行处理,本实施例能根据事件类型的优先级进行排序,同时能将历史订阅事件方法存储至缓存中,以便后续可直接从缓存中查询对应的订阅事件方法,提升了处理效率。
参考图3,图3为本发明消息服务处理方法第二实施例的流程示意图。
进一步地,为了同时处理多个订阅事件,提高处理能力,基于上述第一实施例,在本实施例中,上述步骤S30包括:
步骤S31:根据排序结果将当前需要发送的事件添加至所述事件队列中;
步骤S32:根据事件类型从所述事件类型链表中获取对应的订阅者;
步骤S33:通过轮询操作将所述事件队列中的事件发送至所述订阅者。
需要说明的是,由于上述事件类型链表中存储有事件类型对应的订阅者集合,在具体实现中,上述设备可根据需要发送的事件的事件类型从事件类型链表中获取对应的订阅者信息,并通过轮询操作将事件发送至对应的订阅者。
考虑到部分事件之间存在关系的情况,在根据事件类型从所述事件类型链表中获取对应的订阅者的步骤之前,上述设备还会对事件队列中的所有事件进行遍历,判断是否存在超类事件,即判断将要发送的事件是否存在相关联的事件,若存在,则上述设备会遍历查找对应的父类事件,找到与将要发送的事件相关联的所有事件以进行同时发送,进而可以提升处理效率。
为了进一步提高上述设备的处理能力,上述设备可支持多线程模式,即上述步骤S31之后,还包括:获取所述事件队列的当前线程类型;相应地,上述步骤S33之后,还包括:根据所述订阅事件方法获取线程模式,并根据所述当前线程类型将线程模式发送至所述订阅者,以使所述订阅者在接收到所述事件后根据所述线程模式进行事件处理。
可理解的是,上述当前线程类型可分为主线程和非主线程,线程模式可以是不同的事件处理方式(也即订阅事件方法),在事件队列中发布事件的线程为主线程时,通过反射的方式调用订阅事件方法,完成事件发送;在事件队列中发布的线程为非主线程时,则会进行线程切换,将非主线程切换成主线程,再通过反射的方式调用订阅事件方法。
进一步地,考虑到某些事件在发送时订阅者还未注册,导致需要再次发送,过程较为复杂,因此可将部分事件设置为粘性事件,以使在订阅者注册后可自动接收之前发送过的事件,具体步骤为在上述步骤S31之前,还包括:根据所述事件类型判断所述订阅事件是否为粘性事件;若是,则将所述事件类型和所述订阅事件方法保存至粘性事件集合中;相应地,所述步骤S10,包括:在接收到订阅事件时,根据所述订阅事件的事件类型判断是否为粘性事件;若是,则根据所述订阅事件从所述粘性事件集合中获取对应的订阅事件方法。
本实施例可根据需要发送的事件的事件类型从事件类型链表中获取对应的订阅者信息,并通过轮询操作将事件发送至对应的订阅者,进而提升处理效率;同时本实施例可通过多线程模式提升处理能力,根据不同的当前线程类型将线程模式发送至对应的订阅者,以使订阅者根据不同的线程模式调用订阅事件方法;本实施例还能将部分事件设置为粘性事件,以使后续在接收到订阅者的订阅事件时,若为粘性事件则可直接从粘性事件集合中选取对应的订阅事件方法,进一步减小了设备运行压力。
参考图4,图4为本发明消息服务处理方法第三实施例的流程示意图。
进一步地,考虑到订阅者存在需要对事件取消订阅的情况,基于上述各实施例,如图4所示,上述步骤S20之后,还包括:
步骤S21:将所述订阅事件对应的订阅者和所述事件类型添加至订阅者列表中。
相应地,上述步骤S30之后,还包括:步骤S40:在接收待取消订阅事件时,根据所述待取消订阅事件对所述事件类型链中对应的事件类型进行删除。
需要说明的是,上述订阅者列表中存储有订阅者与其所有订阅事件的事件类型,即一个订阅者订阅的所有事件类型,为了便于说明,我们可将订阅者列表记作typesBySubscriber。
可理解的是,在设备根据事件类型的优先级对subscriptionByEventType中的数据进行排序后,可根据订阅者与其所有订阅事件的事件类型保存至typesBySubscriber中,以便后续取消时使用。
在具体实现中,当订阅者取消订阅事件时,上述设备接收到待取消订阅事件和待取消订阅者(也即当前订阅者),首先从typesBySubscribe中获取当前订阅者对应的所有事件类型列表,然后遍历事件类型列表,同时从subscriptionByEventType中获取事件类型对应的所有订阅者列表,然后遍历订阅者列表,匹配出待取消的订阅者,并从当前事件类型对应的订阅者列表中删除,在遍历结束后从typesBySubscribe中删除当前订阅者的信息。
本实施例可在设备根据事件类型的优先级对事件类型链表中的数据进行排序后,将订阅者和对应的所用事件类型添加至订阅者列表中,当接收到当前订阅者的取消订阅事件时,先将事件类型链表中的事件类型进行删除,再讲订阅者列表中的当前订阅者进行删除,进而可实现订阅者注销过程。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有消息服务处理程序,所述消息服务处理程序被处理器执行时实现如上文所述的消息服务处理方法的步骤。
此外,参照图5,图5为本发明消息服务处理装置第一实施例的结构框图,本发明实施例还提出一种消息服务处理装置,所述消息服务处理装置包括:
方法获取模块501,用于在接收到订阅事件时,获取所述订阅事件对应的订阅事件方法;
链表排序模块502,用于将所述订阅事件方法可接收事件类型添加至事件类型链表中,并根据事件类型的优先级对所述事件类型链表进行排序;
事件发送模块503,用于根据排序结果将当前需要发送的事件添加至对应的事件队列中,并通过轮询操作对所述事件队列中的事件进行发送。
本实施例上述设备可根据订阅者的订阅事件在缓存中进行查找,若查找到对应的订阅事件方法,则将查找到的所有订阅事件方法保存至订阅事件方法列表中;若在缓存中未查找到对应的订阅事件方法,则上述设备可根据实际设置选择使用索引的方式或反射解析的方式,若使用索引的方式,则上述设备在使用之前可对每一个历史订阅事件方法生成一个索引标识符,再根据索引标识符查找到对应的订阅事件方法,并将查找到的订阅事件方法保存至订阅事件方法列表中,同时将订阅事件方法列表保存至上述缓存中,以便后续可直接从缓存中查找,缩短查找时间;若使用反射解析的方式,则上述设备可通过反射解析订阅事件方法,并将解析后的订阅事件方法保存至上述订阅事件方法列表中,同时将订阅事件方法列表保存至缓存中,以便后续可直接从缓存中进行查找,缩短查找时间,进而完成订阅者的所有订阅事件方法的查找;将查找到的订阅事件方法可接收的事件类型和对应的订阅者集合保存至事件类型链表中,并根据事件类型的优先级对事件类型链表中的订阅事件方法进行排序;再根据排序结果将需要发送的事件添加至对应的事件队列中,并通过轮询操作将事件发送至对应的订阅者。相比于现有的在接收到事件时立即进行处理,本实施例能根据事件类型的优先级进行排序,同时能将历史订阅事件方法存储至缓存中,以便后续可直接从缓存中查询对应的订阅事件方法,提升了处理效率。
本发明消息服务处理装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器/随机存取存储器、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种消息服务处理方法,其特征在于,所述方法包括以下步骤:
在接收到订阅事件时,获取所述订阅事件对应的订阅事件方法;
将所述订阅事件方法可接收事件类型添加至事件类型链表中,并根据事件类型的优先级对所述事件类型链表进行排序;
根据排序结果将当前需要发送的事件添加至对应的事件队列中,并通过轮询操作对所述事件队列中的事件进行发送。
2.如权利要求1所述的消息服务处理方法,其特征在于,所述在接收到订阅事件时,获取所述订阅事件对应的订阅事件方法的步骤,包括:
在接收到订阅事件时,根据所述订阅事件在缓存中查找是否存在对应的订阅事件方法;
若是,根据所述订阅事件获取对应的订阅事件方法。
3.如权利要求2所述的消息服务处理方法,其特征在于,所述在接收到订阅事件时,根据所述订阅事件在缓存中查找是否存在对应的订阅事件方法的步骤之后,还包括:
若否,根据所述订阅事件获取对应的索引方式标识;
根据所述索引方式标识从索引类中选取对应的订阅事件方法;
相应地,所述若否,根据所述订阅事件获取对应的索引方式标识的步骤之前,还包括:
根据订阅事件方法生成对应的索引标识符,并将所述索引标识符和对应的订阅事件方法保存至索引类中。
4.如权利要求1至3中任一项所述的消息服务处理方法,其特征在于,所述根据排序结果将当前需要发送的事件添加至对应的事件队列中,并通过轮询操作对所述事件队列中的事件进行发送的步骤,包括:
根据排序结果将当前需要发送的事件添加至所述事件队列中;
根据事件类型从所述事件类型链表中获取对应的订阅者;
通过轮询操作将所述事件队列中的事件发送至所述订阅者。
5.如权利要求4所述的消息服务处理方法,其特征在于,所述根据排序结果将当前需要发送的事件添加至所述事件队列中的步骤之后,还包括:
获取所述事件队列的当前线程类型;
相应地,所述通过轮询操作将所述事件队列中的事件发送至所述订阅者的步骤之后,还包括:
根据所述订阅事件方法获取线程模式,并根据所述当前线程类型将线程模式发送至所述订阅者,以使所述订阅者在接收到所述事件后根据所述线程模式进行事件处理。
6.如权利要求4所述的消息服务处理方法,其特征在于,所述根据排序结果将当前需要发送的事件添加至所述事件队列中的步骤之前,还包括:
根据所述事件类型判断所述订阅事件是否为粘性事件;
若是,则将所述事件类型和所述订阅事件方法保存至粘性事件集合中;
相应地,所述在接收到订阅事件时,获取所述订阅事件对应的订阅事件方法的步骤,包括:
在接收到订阅事件时,根据所述订阅事件的事件类型判断是否为粘性事件;
若是,则根据所述订阅事件从所述粘性事件集合中获取对应的订阅事件方法。
7.如权利要求1至3中任一项所述的消息服务处理方法,其特征在于,所述将所述订阅事件方法可接收事件类型添加至事件类型链表中,并根据事件类型的优先级对所述事件类型链表进行排序的步骤之后,还包括:
将所述订阅事件对应的订阅者和所述事件类型添加至订阅者列表中;
相应地,所述根据排序结果将当前需要发送的事件添加至对应的事件队列中,并通过轮询操作对所述事件队列中的事件进行发送的步骤之后,还包括:
在接收待取消订阅事件时,根据所述待取消订阅事件对所述事件类型链中对应的事件类型进行删除。
8.一种消息服务处理装置,其特征在于,所述装置包括:
方法获取模块,用于在接收到订阅事件时,获取所述订阅事件对应的订阅事件方法;
链表排序模块,用于将所述订阅事件方法可接收事件类型添加至事件类型链表中,并根据事件类型的优先级对所述事件类型链表进行排序;
事件发送模块,用于根据排序结果将当前需要发送的事件添加至对应的事件队列中,并通过轮询操作对所述事件队列中的事件进行发送。
9.一种消息服务处理设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的消息服务处理程序,所述消息服务处理程序配置为实现如权利要求1至7任一项所述的消息服务处理方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有消息服务处理程序,所述消息服务处理程序被处理器执行时实现如权利要求1至7任一项所述的消息服务处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211008331.0A CN115437804A (zh) | 2022-08-22 | 2022-08-22 | 消息服务处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211008331.0A CN115437804A (zh) | 2022-08-22 | 2022-08-22 | 消息服务处理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115437804A true CN115437804A (zh) | 2022-12-06 |
Family
ID=84245320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211008331.0A Pending CN115437804A (zh) | 2022-08-22 | 2022-08-22 | 消息服务处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115437804A (zh) |
-
2022
- 2022-08-22 CN CN202211008331.0A patent/CN115437804A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109451020B (zh) | 超时管理方法、设备及计算机可读存储介质 | |
CN107818023B (zh) | 基于线程的消息处理方法、智能设备及存储介质 | |
CN109614164B (zh) | 实现插件可配置的方法、装置、设备及可读存储介质 | |
CN111478781B (zh) | 一种消息广播的方法和装置 | |
CN111258565A (zh) | 小程序的生成方法、系统、服务器及存储介质 | |
CN111221630A (zh) | 业务流程处理方法、装置、设备、可读存储介质及系统 | |
CN112395107A (zh) | 税控设备控制的方法、装置、存储介质及电子设备 | |
CN111083219A (zh) | 请求处理方法、装置、设备与计算机可读存储介质 | |
CN110852603B (zh) | 高吞吐量的风控数据处理方法、装置、设备及存储介质 | |
CN109150720B (zh) | 业务链报文转发方法、装置、设备及计算机可读存储介质 | |
CN108536541B (zh) | 流程引擎对象处理方法及装置 | |
CN115550354A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN110741617A (zh) | 资源更新方法、装置、计算机设备和存储介质 | |
CN115437804A (zh) | 消息服务处理方法、装置、设备及存储介质 | |
CN113535439B (zh) | 业务请求处理方法、装置、设备及存储介质 | |
CN113596177B (zh) | 智能家居设备的ip地址的解析方法和装置 | |
CN110493735B (zh) | 一种短信处理方法及装置 | |
CN109639795B (zh) | 一种基于AcitveMQ消息队列的服务管理方法与装置 | |
CN115543647A (zh) | 一种函数调用方法 | |
CN113761085A (zh) | 一种处理订单数据的方法和装置 | |
CN112306695A (zh) | 数据的处理方法、装置、电子设备及计算机存储介质 | |
CN111061543A (zh) | 一种多租户工作流引擎服务方法、装置及服务器 | |
CN112019452B (zh) | 一种业务需求的处理方法、系统及相关装置 | |
CN114979284B (zh) | 一种5g消息调度方法、装置及系统 | |
CN113204434A (zh) | 基于k8s的计划任务执行方法、装置及计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |