CN114338381A - 消息的单元化处理方法、消息网关与消息的处理系统 - Google Patents
消息的单元化处理方法、消息网关与消息的处理系统 Download PDFInfo
- Publication number
- CN114338381A CN114338381A CN202111645362.2A CN202111645362A CN114338381A CN 114338381 A CN114338381 A CN 114338381A CN 202111645362 A CN202111645362 A CN 202111645362A CN 114338381 A CN114338381 A CN 114338381A
- Authority
- CN
- China
- Prior art keywords
- message
- target service
- target
- unit
- determining
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title abstract description 15
- 238000000034 method Methods 0.000 claims abstract description 58
- 230000008569 process Effects 0.000 claims description 23
- 230000004044 response Effects 0.000 claims description 16
- 238000010586 diagram Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种消息的单元化处理方法、消息网关与消息的处理系统,该处理方法包括:获取消息,并确定消息中的目标数据和消息的类型,目标数据为消息传输的数据;根据配置文件和消息的类型,确定目标服务单元和目标服务码,配置文件为预先配置的文件,目标服务码为目标服务的唯一标识,目标服务为目标服务单元中的多个服务中的一个;将携带有目标服务码和目标数据的请求报文发送给目标服务单元,以使得目标服务单元根据目标服务码确定对应的目标服务,并采用目标服务对目标数据进行处理,本方案实现了消息内容的单元化处理,保证了对消息内容的执行率较高,提高了系统的并发处理能力,从而解决了现有技术中难以对消息内容进行单元化处理的问题。
Description
技术领域
本申请涉及消息的处理领域,具体而言,涉及一种消息的单元化处理方法、消息网关、计算机可读存储介质、处理器与消息的处理系统。
背景技术
在微服务的单元化架构平台中,由于异步处理的业务需要,会以消息的形式,借助各种消息中间件,来实现服务的异步处理和解耦,但在具体的实现的过程中,会通过EDB(企业数据总线,Enterprise Data Bus,简称EDB)来获取数据,而EDB在接收数据之后,通常需要消息网关负责对EDB里消息队列的消息接收。
由于EDB最初设计时是作为数据总线来进行使用,对于消息中间件的能力并没有深度挖掘,欠缺了消息的防丢失能力,还未实现对消息内容进行单元化处理。
因此,亟需一种能够对消息内容进行单元化处理的方法。
在背景技术部分中公开的以上信息只是用来加强对本文所描述技术的背景技术的理解,因此,背景技术中可能包含某些信息,这些信息对于本领域技术人员来说并未形成在本国已知的现有技术。
发明内容
本申请的主要目的在于提供一种消息的单元化处理方法、消息网关、计算机可读存储介质、处理器与消息的处理系统,以解决现有技术中难以对消息内容进行单元化处理的问题。
根据本发明实施例的一个方面,提供了一种消息的单元化处理方法,包括:获取消息,并确定所述消息中的目标数据和所述消息的类型,所述目标数据为所述消息传输的数据;根据配置文件和所述消息的类型,确定目标服务单元和目标服务码,所述配置文件为预先配置的文件,所述目标服务码为目标服务的唯一标识,所述目标服务为所述目标服务单元中的多个服务中的一个;将携带有所述目标服务码和所述目标数据的请求报文发送给所述目标服务单元,以使得所述目标服务单元根据所述目标服务码确定对应的所述目标服务,并采用所述目标服务对所述目标数据进行处理。
可选地,根据配置文件和所述消息的类型,确定目标服务单元和目标服务码,包括:根据所述消息的类型,确定所述配置文件;根据所述配置文件,确定与所述消息对应的所述目标服务单元和所述目标服务码。
可选地,获取消息,包括:在线程池不繁忙的情况下,获取所述消息;在所述线程池繁忙或者企业数据总线中的所述消息为空的情况下,暂停获取所述消息,并控制所述线程池休眠。
可选地,确定所述消息中的目标数据和所述消息的类型,包括:对所述消息进行解析,得到所述消息中的所述目标数据、所述消息的类型以及所述消息的唯一标识;根据所述消息的唯一标识确定所述消息是否已经存入数据库中;在所述消息已经存入所述数据库的情况下,将所述消息不存入所述数据库中,并发送第一回执消息至企业数据总线;在所述消息未存入所述数据库的情况下,将所述消息存入至所述数据库中,并发送第二回执消息至所述企业数据总线。
可选地,在采用所述目标服务对所述目标数据进行处理之后,所述方法还包括:接收响应报文,所述响应报文用于表征所述目标服务对所述目标数据的处理情况,所述处理情况包括以下之一:成功执行、未成功执行;根据所述响应报文,对所述数据库中存储的所述消息的状态进行更新。
可选地,所述方法还包括:根据预定时间间隔轮询所述数据库中所有的所述消息的状态,并确定未被成功执行的所述消息的未成功执行次数;在所述未成功执行次数小于或者等于预定值的情况下,再次将所述消息封装为所述请求报文,并将再次封装得到的所述请求报文发送给所述目标服务单元;在所述未成功执行次数大于所述预定值的情况下,将所述消息的状态更新为执行失败。
可选地,在获取消息,并确定所述消息中的目标数据和所述消息的类型之前,所述方法还包括:对线程池进行初始化配置;在对所述线程池初始化成功的情况下,确定所述线程池是否繁忙,在所述线程池中所有的线程全部在执行任务且所述线程池对应的队列已满的情况下,确定所述线程池繁忙。
根据本发明实施例的另一方面,还提供了一种消息网关,包括:所述消息网关包括:获取单元,用于获取消息,并确定所述消息中的目标数据和所述消息的类型,所述目标数据为所述消息传输的数据;第一确定单元,用于根据配置文件和所述消息的类型,确定目标服务单元和目标服务码,所述配置文件为预先配置的文件,所述目标服务码为目标服务的唯一标识,所述目标服务为所述目标服务单元中的多个服务中的一个;第一发送单元,用于将携带有所述目标服务码和所述目标数据的请求报文发送给所述目标服务单元,以使得所述目标服务单元根据所述目标服务码确定对应的所述目标服务,并采用所述目标服务对所述目标数据进行处理。
根据本发明实施例的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,所述程序执行任意一种所述的方法。
根据本发明实施例的再一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行任意一种所述的方法。
根据本发明实施例的一方面,还提供了一种消息的处理系统,包括:一个或多个处理器,存储器以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行任意一种所述的方法。
在本发明实施例中,所述消息的单元化处理方法中,首先,获取消息,并根据获取到的所述消息确定所述消息中的目标数据和所述消息的类型;然后,根据配置文件和所述消息的类型,确定目标服务单元和目标服务码;最后,将携带有所述目标服务码和所述目标数据的请求报文发送给所述目标服务单元,所述目标服务单元可以根据目标服务码确定对应的目标服务,并采用所述目标服务对所述目标数据进行处理,其中,所述配置文件为预先配置的文件,所述目标服务码为目所述标服务的唯一标识,所述目标服务为所述目标服务单元中的多个服务中的一个。在本方案中,根据配置文件和获取到的消息的类型,确定与该消息对应的目标服务单元和目标服务码,再将携带有目标数据和目标服务码的请求报文发送给目标服务单元,即实现了对消息内容的单元化处理,保证了对消息内容的执行率较高,提高了系统的并发处理能力,从而解决了现有技术中难以对消息内容进行单元化处理的问题。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了根据本申请的一种实施例的消息的单元化处理方法的示意图;
图2示出了根据本申请的一种实施例的消息网关的示意图;
图3示出了根据本申请的消息网关的处理流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
线程池:多个线程的集合称为线程池,使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。
正如背景技术中所说的,现有技术中难以对消息内容进行单元化处理,为了解决上述问题,本申请的一种典型的实施方式中,提供了一种消息的单元化处理方法、消息网关、计算机可读存储介质、处理器与消息的处理系统。
根据本申请的实施例,提供了一种消息的单元化处理方法。
图1是根据本申请实施例的消息的单元化处理方法的流程图。如图1所示,该方法可应用于消息网关,该方法包括以下步骤:
步骤S101,获取消息,并确定上述消息中的目标数据和上述消息的类型,上述目标数据为上述消息传输的数据;
步骤S102,根据配置文件和上述消息的类型,确定目标服务单元和目标服务码,上述配置文件为预先配置的文件,上述目标服务码为目标服务的唯一标识,上述目标服务为上述目标服务单元中的多个服务中的一个;
步骤S103,将携带有上述目标服务码和上述目标数据的请求报文发送给上述目标服务单元,以使得上述目标服务单元根据上述目标服务码确定对应的上述目标服务,并采用上述目标服务对上述目标数据进行处理。
上述消息的单元化处理方法中,首先,获取消息,并根据获取到的上述消息确定上述消息中的目标数据和上述消息的类型;然后,根据配置文件和上述消息的类型,确定目标服务单元和目标服务码;最后,将携带有上述目标服务码和上述目标数据的请求报文发送给上述目标服务单元,上述目标服务单元可以根据目标服务码确定对应的目标服务,并采用上述目标服务对上述目标数据进行处理,其中,上述配置文件为预先配置的文件,上述目标服务码为目上述标服务的唯一标识,上述目标服务为上述目标服务单元中的多个服务中的一个。在本方案中,根据配置文件和获取到的消息的类型,确定与该消息对应的目标服务单元和目标服务码,再将携带有目标数据和目标服务码的请求报文发送给目标服务单元,即实现了对消息内容的单元化处理,保证了对消息内容的执行率较高,提高了系统的并发处理能力,从而解决了现有技术中难以对消息内容进行单元化处理的问题。
在实际的应用过程中,上述消息的类型可以为文件类的消息、数据类的消息、响应类的消息等等。另外,在本方案中,可以将目标数据以及目标服务码等封装为一个请求报文并将该请求报文发送给目标服务单元,而目标服务单元根据请求报文中携带的目标服务码确定对应的目标服务,这样保证了目标服务单元可以较为简单地识别到请求报文,保证了可以较为及时地执行该请求报文。
具体地,当上述消息的类型为文件类的消息的情况下,上述消息可以包括文件的类型,文件上传的时间、文件所在的地址等等。
本申请的一种具体的实施例中,还可以通过创建EDB(企业数据总线,EnterpriseData Bus,简称EDB)消息接收器来从EDB中拉取消息。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
为了较为简单和高效地确定出目标服务单元和目标服务码,本申请的一种实施例中,根据配置文件和上述消息的类型,确定目标服务单元和目标服务码,包括:根据上述消息的类型,确定上述配置文件;根据上述配置文件,确定与上述消息对应的上述目标服务单元和上述目标服务码。
本申请的一种具体的实施例中,上述配置文件可以为预先存储在消息网关中。
本申请的又一种实施例中,获取消息,包括:在线程池不繁忙的情况下,获取上述消息;在上述线程池繁忙或者企业数据总线中的上述消息为空的情况下,暂停获取上述消息,并控制上述线程池休眠,这样可以降低系统消耗。
本申请的一种具体的实施例中,还可以根据设定的时间间隔控制线程池进行休眠。
本申请的另一种实施例中,确定上述消息中的目标数据和上述消息的类型,包括:对上述消息进行解析,得到上述消息中的上述目标数据、上述消息的类型以及上述消息的唯一标识;根据上述消息的唯一标识确定上述消息是否已经存入数据库中;在上述消息已经存入上述数据库的情况下,将上述消息不存入上述数据库中,并发送第一回执消息至企业数据总线;在上述消息未存入上述数据库的情况下,将上述消息存入至上述数据库中,并发送第二回执消息至上述企业数据总线。在该实施例中,根据确定出的消息的唯一标识,判断消息是否已经存入数据库中,若消息已经存入数据库中,为了保证消息不被重复存入到数据库中,则将该消息不存入数据库中,并向企业数据总线发送第一回执消息,若消息未存入数据库,则将消息存入数据库中,以防止该消息被丢失,并向企业数据总线发送第二回执消息,这样保证了企业数据总线可以较为及时地知晓消息是否已经被消费,进而解决了消息的可靠性的问题。
具体地,若根据消息的唯一标识确定出消息已经存入数据库中,则表明企业数据总线未及时将该消息删除,才会出现再次接收到重复的消息,因此,在这种情况下,本方案会向企业数据总线回复第一回执消息,第一回执消息用于表征该消息重复,可将该消息删除,若根据消息的唯一标识确定出消息还未存入数据库中,则本方案会将消息存入到数据库中,并向企业数据总线回复第二回执消息,第二回执消息用于表征消息已经入库,可将该消息删除,这样可以较为高效地对消息进行管理,还保证了存入到数据库中的消息后续一定会被执行,进一步地保证了消息的执行率较高。
为了便于查看数据库中的消息的状态以及较为方便地对数据中的消息进行管理,本申请的再一种实施例中,在采用上述目标服务对上述目标数据进行处理之后,上述方法还包括:接收响应报文,上述响应报文用于表征上述目标服务对上述目标数据的处理情况,上述处理情况包括以下之一:成功执行、未成功执行;根据上述响应报文,对上述数据库中存储的上述消息的状态进行更新。
具体地,存入到数据库中消息的状态可以分为未执行和已执行,而对于已执行的消息的状态还可以分为未成功执行和成功执行。
本申请的一种实施例中,上述方法还包括:根据预定时间间隔轮询上述数据库中所有的上述消息的状态,并确定未被成功执行的上述消息的未成功执行次数;在上述未成功执行次数小于或者等于预定值的情况下,再次将上述消息封装为上述请求报文,并将再次封装得到的上述请求报文发送给上述目标服务单元;在上述未成功执行次数大于上述预定值的情况下,将上述消息的状态更新为执行失败。在该实施例中,在未成功执行次数小于或者等于预定值的情况下,将未被成功执行的消息再次封装成请求报文,发送给目标服务单元,以使得能够及时再次执行未被成功执行的消息,在未成功执行次数大于预定值的情况下,将未被成功执行的消息的状态更新为执行失败,即实现了可以定时获取执行异常的消息,实现了对异常消息的兜底,进一步地保证了存入到数据库中的消息一定会被执行,进一步地保证了消息的执行率较高。
在实际的应用过程中,上述预定时间间隔和上述预定值可以根据实际情况进行调整,在本申请中并不对上述预定时间间隔和上述预定值进行具体的限制。
本申请的一种具体的实施例中,在未成功执行次数大于预定值的情况下,将该未被成功执行的消息的状态更新为执行失败,后续可以将确定为执行失败的消息由人工去处理。
本申请的又一种实施例中,在获取消息,并确定上述消息中的目标数据和上述消息的类型之前,上述方法还包括:对线程池进行初始化配置;在对上述线程池初始化成功的情况下,确定上述线程池是否繁忙,在上述线程池中所有的线程全部在执行任务且上述线程池对应的队列已满的情况下,确定上述线程池繁忙,后续在线程池繁忙的情况下,控制线程池暂停获取消息,并控制线程池休眠,进一步地保证了系统的消耗较低。
本申请的一种具体的实施例中,在对线程池初始化失败的情况下,则抛出“线程池信息获取失败”的信息,以使得开发人员或者管理人员及时该异常进行处理。
本申请实施例还提供了一种消息网关,需要说明的是,本申请实施例的消息网关可以用于执行本申请实施例所提供的用于消息的单元化处理方法。以下对本申请实施例提供的消息网关进行介绍。
图2是根据本申请实施例的消息网关的示意图。如图2所示,该消息网关包括:
获取单元10,用于获取消息,并确定上述消息中的目标数据和上述消息的类型,上述目标数据为上述消息传输的数据;
第一确定单元20,用于根据配置文件和上述消息的类型,确定目标服务单元和目标服务码,上述配置文件为预先配置的文件,上述目标服务码为目标服务的唯一标识,上述目标服务为上述目标服务单元中的多个服务中的一个;
第一发送单元30,用于将携带有上述目标服务码和上述目标数据的请求报文发送给上述目标服务单元,以使得上述目标服务单元根据上述目标服务码确定对应的上述目标服务,并采用上述目标服务对上述目标数据进行处理。
上述消息网关中,获取单元用于获取消息,并确定上述消息中的目标数据和上述消息的类型,上述目标数据为上述消息传输的数据;第一确定单元用于根据配置文件和上述消息的类型,确定目标服务单元和目标服务码,上述配置文件为预先配置的文件,上述目标服务码为目标服务的唯一标识,上述目标服务为上述目标服务单元中的多个服务中的一个;第一发送单元用于将携带有上述目标服务码和上述目标数据的请求报文发送给上述目标服务单元,以使得上述目标服务单元根据上述目标服务码确定对应的上述目标服务,并采用上述目标服务对上述目标数据进行处理。在本方案中,根据配置文件和获取到的消息的类型,确定与该消息对应的目标服务单元和目标服务码,再将携带有目标数据和目标服务码的请求报文发送给目标服务单元,即实现了对消息内容的单元化处理,保证了对消息内容的执行率较高,提高了系统的并发处理能力,从而解决了现有技术中难以对消息内容进行单元化处理的问题。
在实际的应用过程中,上述消息的类型可以为文件类的消息、数据类的消息、响应类的消息等等。另外,在本方案中,可以将目标数据以及目标服务码等封装为一个请求报文并将该请求报文发送给目标服务单元,而目标服务单元根据请求报文中携带的目标服务码确定对应的目标服务,这样保证了目标服务单元可以较为简单地识别到请求报文,保证了可以较为及时地执行该请求报文。
具体地,当上述消息的类型为文件类的消息的情况下,上述消息可以包括文件的类型,文件上传的时间、文件所在的地址等等。
本申请的一种具体的实施例中,还可以通过创建EDB(企业数据总线,EnterpriseData Bus,简称EDB)消息接收器来从EDB中拉取消息。
为了较为简单和高效地确定出目标服务单元和目标服务码,本申请的一种实施例中,上述第一确定单元包括第一确定模块和第二确定模块,其中,上述第一确定模块用于根据上述消息的类型,确定上述配置文件;上述第二确定模块用于根据上述配置文件,确定与上述消息对应的上述目标服务单元和上述目标服务码。
本申请的一种具体的实施例中,上述配置文件可以为预先存储在消息网关中。
本申请的又一种实施例中,上述获取单元包括获取模块和控制模块,其中,上述获取模块用于在线程池不繁忙的情况下,获取上述消息;上述控制模块用于在上述线程池繁忙或者企业数据总线中的上述消息为空的情况下,暂停获取上述消息,并控制上述线程池休眠,这样可以降低系统消耗。
本申请的一种具体的实施例中,还可以根据设定的时间间隔控制线程池进行休眠。
本申请的另一种实施例中,上述获取单元还包括解析模块、第三确定模块、第一发送模块和第二发送模块,其中,上述解析模块用于对上述消息进行解析,得到上述消息中的上述目标数据、上述消息的类型以及上述消息的唯一标识;上述第三确定模块用于根据上述消息的唯一标识确定上述消息是否已经存入数据库中;上述第一发送模块用于在上述消息已经存入上述数据库的情况下,将上述消息不存入上述数据库中,并发送第一回执消息至企业数据总线;上述第二发送模块用于在上述消息未存入上述数据库的情况下,将上述消息存入至上述数据库中,并发送第二回执消息至上述企业数据总线。在该实施例中,根据确定出的消息的唯一标识,判断消息是否已经存入数据库中,若消息已经存入数据库中,为了保证消息不被重复存入到数据库中,则将该消息不存入数据库中,并向企业数据总线发送第一回执消息,若消息未存入数据库,则将消息存入数据库中,以防止该消息被丢失,并向企业数据总线发送第二回执消息,这样保证了企业数据总线可以较为及时地知晓消息是否已经被消费,进而解决了消息的可靠性的问题。
具体地,若根据消息的唯一标识确定出消息已经存入数据库中,则表明企业数据总线未及时将该消息删除,才会出现再次接收到重复的消息,因此,在这种情况下,本方案会向企业数据总线回复第一回执消息,第一回执消息用于表征该消息重复,可将该消息删除,若根据消息的唯一标识确定出消息还未存入数据库中,则本方案会将消息存入到数据库中,并向企业数据总线回复第二回执消息,第二回执消息用于表征消息已经入库,可将该消息删除,这样可以较为高效地对消息进行管理,还保证了存入到数据库中的消息后续一定会被执行,进一步地保证了消息的执行率较高。
为了便于查看数据库中的消息的状态以及较为方便地对数据中的消息进行管理,本申请的再一种实施例中,上述消息网关还包括接收单元和第一更新单元,其中,上述接收单元用于在采用上述目标服务对上述目标数据进行处理之后,接收响应报文,上述响应报文用于表征上述目标服务对上述目标数据的处理情况,上述处理情况包括以下之一:成功执行、未成功执行;上述第一更新单元用于根据上述响应报文,对上述数据库中存储的上述消息的状态进行更新。
具体地,存入到数据库中消息的状态可以分为未执行和已执行,而对于已执行的消息的状态还可以分为未成功执行和成功执行。
本申请的一种实施例中,上述消息网关还包括第二确定单元、第二发送单元和第二更新单元,其中,上述第二确定单元用于根据预定时间间隔轮询上述数据库中所有的上述消息的状态,并确定未被成功执行的上述消息的未成功执行次数;上述第二发送单元用于在上述未成功执行次数小于或者等于预定值的情况下,再次将上述消息封装为上述请求报文,并将再次封装得到的上述请求报文发送给上述目标服务单元;上述第二更新单元用于在上述未成功执行次数大于上述预定值的情况下,将上述消息的状态更新为执行失败。在该实施例中,在未成功执行次数小于或者等于预定值的情况下,将未被成功执行的消息再次封装成请求报文,发送给目标服务单元,以使得能够及时再次执行未被成功执行的消息,在未成功执行次数大于预定值的情况下,将未被成功执行的消息的状态更新为执行失败,即实现了可以定时获取执行异常的消息,实现了对异常消息的兜底,进一步地保证了存入到数据库中的消息一定会被执行,进一步地保证了消息的执行率较高。
在实际的应用过程中,上述预定时间间隔和上述预定值可以根据实际情况进行调整,在本申请中并不对上述预定时间间隔和上述预定值进行具体的限制。
本申请的一种具体的实施例中,在未成功执行次数大于预定值的情况下,将该未被成功执行的消息的状态更新为执行失败,后续可以将确定为执行失败的消息由人工去处理。
本申请的又一种实施例中,上述消息网关还包括配置单元和第三确定单元,其中,上述配置单元用于在获取消息,并确定上述消息中的目标数据和上述消息的类型之前,对线程池进行初始化配置;上述第三确定单元用于在对上述线程池初始化成功的情况下,确定上述线程池是否繁忙,在上述线程池中所有的线程全部在执行任务且上述线程池对应的队列已满的情况下,确定上述线程池繁忙,后续在线程池繁忙的情况下,控制线程池暂停获取消息,并控制线程池休眠,进一步地保证了系统的消耗较低。
本申请的一种具体的实施例中,在对线程池初始化失败的情况下,则抛出“线程池信息获取失败”的信息,以使得开发人员或者管理人员及时该异常进行处理。
为了使得本领域的技术人员更加清楚明确地了解本申请的技术方案,下面将结合具体的实施例进行说明:
实施例
如图3所示,首先,在应用启动成功后,按照配置初始化线程池,若线程池初始化成功,则留备使用;若线程池初始化失败,则抛出“线程池信息获取失败”的信息;其次,对线程池是否繁忙进行判断,若线程池繁忙,暂停新的消息处理,待有多余线程后,再启动处理流程并控制线程池休眠,若线程池不繁忙时,则继续接收消息;再次,判断消息队列是否为空,若消息队列为空,则控制队列休眠,若消息队列不为空,则对消息进行解析,得到消息的唯一标识,根据消息的唯一标识确定消息是否已入库,若消息已入库发送第一回执消息至企业数据总线,若消息未入库,则发送第二回执消息至企业数据总线(为了保证流程图较为清楚和简洁,图3中将第一回执消息和第二回执消息均表示为回执消息),之后,将存入到数据库的消息转交至异步线程进行处理,然后根据预先存储在消息网关中的配置文件和消息的类型,确定目标服务单元和目标服务码,并将其封装为请求报文,之后,将请求报文发送给目标服务单元,以使得目标服务单元根据请求报文中的目标服务码确定目标服务,并对请求报文中携带的目标数据进行执行,最后,接收响应报文,并根据响应报文更新消息的处理状态。另外,本方案中的消息网关中还内置有轮询服务,会定时对数据库中的消息的状态进行检查,若有未被成功执行的消息,则重新将其封装成请求报文,发送到目标服务单元进行处理。若处理达到预定值仍未成功,则将消息的状态更新为执行失败,走线下人工流程进行后续处理。
上述消息的单元化处理装置包括处理器和存储器,上述获取单元、第一确定单元和第一发送单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决现有技术中难以对消息内容进行单元化处理的问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现上述消息的单元化处理方法。
本发明实施例提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行上述消息的单元化处理方法。
本申请的一种典型的实施例中,还提供了一种消息的处理系统,包括:一个或多个处理器,存储器以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置为由上述一个或多个处理器执行,上述一个或多个程序包括用于执行任意一种上述的方法。
上述消息的处理系统可以执行上述消息的单元化处理方法,上述消息的单元化处理方法中,首先,获取消息,并根据获取到的上述消息确定上述消息中的目标数据和上述消息的类型;然后,根据配置文件和上述消息的类型,确定目标服务单元和目标服务码;最后,将携带有上述目标服务码和上述目标数据的请求报文发送给上述目标服务单元,上述目标服务单元可以根据目标服务码确定对应的目标服务,并采用上述目标服务对上述目标数据进行处理,其中,上述配置文件为预先配置的文件,上述目标服务码为目上述标服务的唯一标识,上述目标服务为上述目标服务单元中的多个服务中的一个。在本方案中,根据配置文件和获取到的消息的类型,确定与该消息对应的目标服务单元和目标服务码,再将携带有目标数据和目标服务码的请求报文发送给目标服务单元,即实现了对消息内容的单元化处理,保证了对消息内容的执行率较高,提高了系统的并发处理能力,从而解决了现有技术中难以对消息内容进行单元化处理的问题。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现至少以下步骤:
步骤S101,获取消息,并确定上述消息中的目标数据和上述消息的类型,上述目标数据为上述消息传输的数据;
步骤S102,根据配置文件和上述消息的类型,确定目标服务单元和目标服务码,上述配置文件为预先配置的文件,上述目标服务码为目标服务的唯一标识,上述目标服务为上述目标服务单元中的多个服务中的一个;
步骤S103,将携带有上述目标服务码和上述目标数据的请求报文发送给上述目标服务单元,以使得上述目标服务单元根据上述目标服务码确定对应的上述目标服务,并采用上述目标服务对上述目标数据进行处理。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有至少如下方法步骤的程序:
步骤S101,获取消息,并确定上述消息中的目标数据和上述消息的类型,上述目标数据为上述消息传输的数据;
步骤S102,根据配置文件和上述消息的类型,确定目标服务单元和目标服务码,上述配置文件为预先配置的文件,上述目标服务码为目标服务的唯一标识,上述目标服务为上述目标服务单元中的多个服务中的一个;
步骤S103,将携带有上述目标服务码和上述目标数据的请求报文发送给上述目标服务单元,以使得上述目标服务单元根据上述目标服务码确定对应的上述目标服务,并采用上述目标服务对上述目标数据进行处理。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
从以上的描述中,可以看出,本申请上述的实施例实现了如下技术效果:
1)、本申请的消息的单元化处理方法中,首先,获取消息,并根据获取到的上述消息确定上述消息中的目标数据和上述消息的类型;然后,根据配置文件和上述消息的类型,确定目标服务单元和目标服务码;最后,将携带有上述目标服务码和上述目标数据的请求报文发送给上述目标服务单元,上述目标服务单元可以根据目标服务码确定对应的目标服务,并采用上述目标服务对上述目标数据进行处理,其中,上述配置文件为预先配置的文件,上述目标服务码为目上述标服务的唯一标识,上述目标服务为上述目标服务单元中的多个服务中的一个。在本方案中,根据配置文件和获取到的消息的类型,确定与该消息对应的目标服务单元和目标服务码,再将携带有目标数据和目标服务码的请求报文发送给目标服务单元,即实现了对消息内容的单元化处理,保证了对消息内容的执行率较高,提高了系统的并发处理能力,从而解决了现有技术中难以对消息内容进行单元化处理的问题。
2)、本申请的消息网关中,获取单元用于获取消息,并确定上述消息中的目标数据和上述消息的类型,上述目标数据为上述消息传输的数据;第一确定单元用于根据配置文件和上述消息的类型,确定目标服务单元和目标服务码,上述配置文件为预先配置的文件,上述目标服务码为目标服务的唯一标识,上述目标服务为上述目标服务单元中的多个服务中的一个;第一发送单元用于将携带有上述目标服务码和上述目标数据的请求报文发送给上述目标服务单元,以使得上述目标服务单元根据上述目标服务码确定对应的上述目标服务,并采用上述目标服务对上述目标数据进行处理。在本方案中,根据配置文件和获取到的消息的类型,确定与该消息对应的目标服务单元和目标服务码,再将携带有目标数据和目标服务码的请求报文发送给目标服务单元,即实现了对消息内容的单元化处理,保证了对消息内容的执行率较高,提高了系统的并发处理能力,从而解决了现有技术中难以对消息内容进行单元化处理的问题。
3)、本申请的消息的处理系统可以执行上述消息的单元化处理方法,上述消息的单元化处理方法中,首先,获取消息,并根据获取到的上述消息确定上述消息中的目标数据和上述消息的类型;然后,根据配置文件和上述消息的类型,确定目标服务单元和目标服务码;最后,将携带有上述目标服务码和上述目标数据的请求报文发送给上述目标服务单元,上述目标服务单元可以根据目标服务码确定对应的目标服务,并采用上述目标服务对上述目标数据进行处理,其中,上述配置文件为预先配置的文件,上述目标服务码为目上述标服务的唯一标识,上述目标服务为上述目标服务单元中的多个服务中的一个。在本方案中,根据配置文件和获取到的消息的类型,确定与该消息对应的目标服务单元和目标服务码,再将携带有目标数据和目标服务码的请求报文发送给目标服务单元,即实现了对消息内容的单元化处理,保证了对消息内容的执行率较高,提高了系统的并发处理能力,从而解决了现有技术中难以对消息内容进行单元化处理的问题。
以上上述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种消息的单元化处理方法,其特征在于,包括:
获取消息,并确定所述消息中的目标数据和所述消息的类型,所述目标数据为所述消息传输的数据;
根据配置文件和所述消息的类型,确定目标服务单元和目标服务码,所述配置文件为预先配置的文件,所述目标服务码为目标服务的唯一标识,所述目标服务为所述目标服务单元中的多个服务中的一个;
将携带有所述目标服务码和所述目标数据的请求报文发送给所述目标服务单元,以使得所述目标服务单元根据所述目标服务码确定对应的所述目标服务,并采用所述目标服务对所述目标数据进行处理。
2.根据权利要求1所述的方法,其特征在于,根据配置文件和所述消息的类型,确定目标服务单元和目标服务码,包括:
根据所述消息的类型,确定所述配置文件;
根据所述配置文件,确定与所述消息对应的所述目标服务单元和所述目标服务码。
3.根据权利要求1所述的方法,其特征在于,获取消息,包括:
在线程池不繁忙的情况下,获取所述消息;
在所述线程池繁忙或者企业数据总线中的所述消息为空的情况下,暂停获取所述消息,并控制所述线程池休眠。
4.根据权利要求1至3任意一项所述的方法,其特征在于,确定所述消息中的目标数据和所述消息的类型,包括:
对所述消息进行解析,得到所述消息中的所述目标数据、所述消息的类型以及所述消息的唯一标识;
根据所述消息的唯一标识确定所述消息是否已经存入数据库中;
在所述消息已经存入所述数据库的情况下,将所述消息不存入所述数据库中,并发送第一回执消息至企业数据总线;
在所述消息未存入所述数据库的情况下,将所述消息存入至所述数据库中,并发送第二回执消息至所述企业数据总线。
5.根据权利要求4所述的方法,其特征在于,在采用所述目标服务对所述目标数据进行处理之后,所述方法还包括:
接收响应报文,所述响应报文用于表征所述目标服务对所述目标数据的处理情况,所述处理情况包括以下之一:成功执行、未成功执行;
根据所述响应报文,对所述数据库中存储的所述消息的状态进行更新。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
根据预定时间间隔轮询所述数据库中所有的所述消息的状态,并确定未被成功执行的所述消息的未成功执行次数;
在所述未成功执行次数小于或者等于预定值的情况下,再次将所述消息封装为所述请求报文,并将再次封装得到的所述请求报文发送给所述目标服务单元;
在所述未成功执行次数大于所述预定值的情况下,将所述消息的状态更新为执行失败。
7.根据权利要求1所述的方法,其特征在于,在获取消息,并确定所述消息中的目标数据和所述消息的类型之前,所述方法还包括:
对线程池进行初始化配置;
在对所述线程池初始化成功的情况下,确定所述线程池是否繁忙,在所述线程池中所有的线程全部在执行任务且所述线程池对应的队列已满的情况下,确定所述线程池繁忙。
8.一种消息网关,其特征在于,所述消息网关包括:
获取单元,用于获取消息,并确定所述消息中的目标数据和所述消息的类型,所述目标数据为所述消息传输的数据;
第一确定单元,用于根据配置文件和所述消息的类型,确定目标服务单元和目标服务码,所述配置文件为预先配置的文件,所述目标服务码为目标服务的唯一标识,所述目标服务为所述目标服务单元中的多个服务中的一个;
第一发送单元,用于将携带有所述目标服务码和所述目标数据的请求报文发送给所述目标服务单元,以使得所述目标服务单元根据所述目标服务码确定对应的所述目标服务,并采用所述目标服务对所述目标数据进行处理。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,所述程序执行权利要求1至7中任意一项所述的方法。
10.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至7中任意一项所述的方法。
11.一种消息的处理系统,其特征在于,包括:一个或多个处理器,存储器以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行权利要求1至7中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111645362.2A CN114338381B (zh) | 2021-12-29 | 2021-12-29 | 消息的单元化处理方法、消息网关与消息的处理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111645362.2A CN114338381B (zh) | 2021-12-29 | 2021-12-29 | 消息的单元化处理方法、消息网关与消息的处理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114338381A true CN114338381A (zh) | 2022-04-12 |
CN114338381B CN114338381B (zh) | 2024-10-01 |
Family
ID=81017698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111645362.2A Active CN114338381B (zh) | 2021-12-29 | 2021-12-29 | 消息的单元化处理方法、消息网关与消息的处理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114338381B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020062793A1 (zh) * | 2018-09-29 | 2020-04-02 | 平安科技(深圳)有限公司 | 基于消息队列的请求处理方法、装置、设备及存储介质 |
CN111786886A (zh) * | 2020-06-30 | 2020-10-16 | 京东数字科技控股有限公司 | 一种消息处理方法、装置、系统、电子设备及存储介质 |
-
2021
- 2021-12-29 CN CN202111645362.2A patent/CN114338381B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020062793A1 (zh) * | 2018-09-29 | 2020-04-02 | 平安科技(深圳)有限公司 | 基于消息队列的请求处理方法、装置、设备及存储介质 |
CN111786886A (zh) * | 2020-06-30 | 2020-10-16 | 京东数字科技控股有限公司 | 一种消息处理方法、装置、系统、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
白莎出拉;廉东本;李文博;: "企业服务总线监听器的研究与设计", 计算机系统应用, no. 02, 15 February 2013 (2013-02-15) * |
Also Published As
Publication number | Publication date |
---|---|
CN114338381B (zh) | 2024-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115328663B (zh) | 基于PaaS平台进行资源调度的方法、装置、设备和存储介质 | |
CN107451147B (zh) | 一种kafka集群动态切换的方法和装置 | |
CN109766172B (zh) | 一种异步任务调度方法以及装置 | |
CN109376053B (zh) | 数据处理方法、装置以及移动终端 | |
CN109710416B (zh) | 资源调度方法及装置 | |
CN112865993B (zh) | 分布式主从系统中从节点的切换方法和装置 | |
CN112559461A (zh) | 文件传输方法及装置、存储介质及电子设备 | |
CN112988281B (zh) | 应用启动方法及装置 | |
CN108563472B (zh) | 基于多开应用的服务插件加载方法及装置 | |
CN111273924A (zh) | 软件更新方法及装置 | |
CN111598405B (zh) | 一种资源分配方法以及服务器 | |
CN115426361A (zh) | 分布式客户端打包方法、装置、主服务器及存储介质 | |
CN106547566B (zh) | 通讯服务进程池管理方法及系统 | |
CN106557404B (zh) | 一种应用控制的方法及移动终端 | |
CN110750365A (zh) | 一种远程过程调用方法、系统、终端及存储介质 | |
CN110365839B (zh) | 关机方法、装置、介质及电子设备 | |
CN114338381B (zh) | 消息的单元化处理方法、消息网关与消息的处理系统 | |
CN114296865B (zh) | 一种虚拟机线程的调度方法、装置、电子设备及存储介质 | |
CN109995590A (zh) | 一种用户自定义设备数据处理服务托管方法 | |
CN114157725B (zh) | 设备联动的方法、装置、服务器、电子设备以及存储介质 | |
CN115904650A (zh) | Linux系统下的定时任务监管方法及装置 | |
CN114662102A (zh) | 一种文件处理方法、装置及存储介质 | |
CN111796906A (zh) | 一种容器管理方法、装置、设备及存储介质 | |
CN113434234A (zh) | 页面跳转方法、装置、计算机可读存储介质及处理器 | |
CN106713453B (zh) | 一种应用信息监控方法和装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |