一种用于消息处理的方法及系统的制作方法
【技术领域】
[0001]本发明涉及数据处理领域,更为具体而言,涉及一种用于消息处理的方法和系统。
【背景技术】
[0002]当今各类信息的数字化应用已经越来越普及,在综合性较高的web系统中,大型项目通常会被拆分成多个模块,这些模块之间通过api接口相互交换数据,有时多个模块间不需要同步实时通信,可以采用消息队列来异步实时通信,但对排查日志和数据分析来说却异常麻烦,因为直接实时通信的模块被消息队列隔开了,没有直接可关联的信息,而且当多个模块依次通过消息队列来异步实时通信时,现象更为显著。但是,由于模块的级联关系,要想从源头模块追查整个操作处理的日志,需要反复在应用模块和消息队列间来回搜索不同的请求唯一标识符和消息,使得消息追踪和处理效率异常低下。
[0003]为解决现有技术中多个模块级联交互时,由于采用不同的请求唯一标识符所导致的消息追踪和处理效率低的问题,亟需一种采有唯一标识符的消息标记方式。
【发明内容】
[0004]为了解决现有技术中多个模块级联交互时,由于采用不同的请求唯一标识符所导致的消息追踪和处理效率低的问题,本发明的实施方式提供了一种用于消息处理方法和系统。
[0005]一方面,本发明实施方式提供了一种用于消息处理的方法,所述方法包括:
[0006]消息中间件接收发送方发起的消息推送调用,其中,所述消息推送调用的标识符为第一标识符;
[0007]生成所述消息推送调用中消息的标识符作为第二标识符,将所述第一标识符作为所述第二标识符对应消息的应用程序接口 API的请求字段;
[0008]将所述第二标识符对应的消息移入出队列,将待推送给所述接收方的消息推送调用的标识符赋值为所述第一标识符,并将所述待推送的消息推送应用推送给所述接收方。
[0009]相应的,本发明实施方式还提供了一种消息标记系统,所述系统包括:发送方、消息中间件和接收方,其中,
[0010]所述发送方,用于向所述消息中间件发起消息推送调用;
[0011]所述消息中间件,用于消息中间件接收所述发送方发起的消息推送调用,其中,所述消息推送调用的标识符为第一标识符;生成所述消息推送调用中消息的标识符作为第二标识符,将所述第一标识符作为所述第二标识符对应消息的应用程序接口 API的请求字段;将所述第二标识符对应的消息移入出队列,将待推送给所述接收方的消息推送调用的标识符赋值为所述第一标识符,并将所述待推送的消息推送应用推送给所述接收方;
[0012]所述接收方,用于接收所述消息中间件推送的以所述第一标识符为标识符的消息推送应用。
[0013]实施本发明的各种实施方式具有以下有益效果:可有效提高多个模块级联交互状态下消息追踪和处理的效率,缩短日志排查时间,降低对大型项目的理解复杂度。
【附图说明】
[0014]图1是根据本发明一种实施方式的用于消息处理的方法的流程示意图;
[0015]图2是根据本发明实施方式的用于消息处理的系统的结构示意图。
【具体实施方式】
[0016]以下结合附图和【具体实施方式】对本发明的各个方面进行详细阐述。其中,众所周知的模块、单元及其相互之间的连接、链接、通信或操作没有示出或未作详细说明。并且,所描述的特征、架构或功能可在一个或一个以上实施方式中以任何方式组合。本领域技术人员应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。还可以容易理解,本文所述和附图所示的各实施方式中的模块或单元或处理方式可以按各种不同配置进行组合和设计。
[0017]图1是根据本发明一种实施方式的用于消息处理的方法的流程示意图;参见图1,所述方法包括如下步骤:
[0018]SI,消息中间件接收发送方发起的消息推送调用,其中,所述消息推送调用的标识符为第一标识符;
[0019]S2,生成所述消息推送调用中消息的标识符作为第二标识符,将所述第一标识符作为所述第二标识符对应消息的应用程序接口 API的请求字段;
[0020]S3,将所述第二标识符对应的消息移入出队列,将待推送给所述接收方的消息推送调用的标识符赋值为所述第一标识符,并将所述待推送的消息推送应用推送给所述接收方。
[0021]在本发明的实施方式中,用于消息处理的方法在步骤SI之前可包括,在消息中间件接收发送方发起的消息推送调用之前,检测当前执行环境是否为接收消息推送的执行环境,若不是接收消息推送的执行环境,则通过hess1n客户端生成所述消息推送调用的第一标识符。其中,检测当前执行环境是否为接收消息推送的执行环境可包括:在发送给接收方的消息推送调用中附加预定参数,所述预定参数为赋值参数,接收所述接收方反馈的对所述预定参数的响应,若所述响应验证正确,则是接收消息推送的执行环境,若所述响应验证错误,则不是接收消息推送的执行环境。例如:该附加的预定参数可以一个隐藏参数,在消息中间件发送应用程序接口(Applicat1n Programming Interface, API)请求给消息接收方时,使用特定的算法给该隐藏的参数赋值,消息接收方在响应消息请求时,如果验证正确,就认为当前执行环境就是接受消息推送请求的执行环境里。例如,A模块为发送方,模块A通过hess1n发起一个消息推送调用,检测当前环境是否为接收消息推送的执行环境,若不是接收消息推送的执行环境,则hess1n客户端将该消息推送调用打包生成本次调用的标识符api_idl。
[0022]接下来,执行步骤SI,消息中间件接收发送方发起的消息推送调用,其中,所述消息推送调用的标识符为上述生成的标识符api_idl。然后,在步骤S2中,消息中间件接收标识符为api_idl的消息推送调用请求,生成该消息推送调用中消息的标识符msgidl,并将标识符api_idl作为标识符为msgidl的消息的API请求字段。也就是说,在该消息中附加一个属性,该属性为将标识符api_idl作为标识符为msgidl的消息的API请求字段,使用该附加的属性记录产生该消息的API的标识符。
[0023]接下来,在步骤S3中,消息中间件标识符为msgidl消息移到出队列,将待推送给接收方(例如,模块B)的消息推送调用的标识符赋值为api_idl,然后将赋值为api_idl的消息推送调用推送给接收方模块B。
[0024]接收方模块B接收赋值为api_idl的消息推送调用,然后调用hess1n库发送消息,然后检测当前执行环境是否为消息推送请求执行环境,在检测到当前执行环境为消息推送执行环境的情形下,获取当前消息推送调用的标识符,即api_idl,作为重新发起的新的消息推送调用的标识符,发送给消息中间件。并且,接收方模块B还可作为发送方,进行与发送方A类似的操作,在多个级联的模块之间重复。也就是说,本发明的实施方式中,发送方发送给消息中间件和消息中间件发送给接收方的消息推送调用的标识符都是一致的,因而可有效提高多个模块级联交互状态下消息追踪和处理的效率,缩短日志排查时间,降低对大型项目的理解复杂度。
[0025]图2是根据本发明实施方式的用于消息处理的系统的结构示意图。参见图2,所述系统I包括:
[0026]发送方100、消息中间件200和接收方300,其中,
[0027]所述发送方100,用于向所述消息中间件发起消息推送调用;
[0028]所述消息中间件200,用于消息中间件接收所述发送方发起的消息推送调用,其中,所述消息推送调用的标识符为第一标识符;生成所述消息推送调用中消息的标识符作为第二标识符,将所述第一标识符作为所述第二标识符对应消息的应用程序接口 API的请求字段;将所述第二标识符对应的消息移入出队列,将待推送给所述接收方的消息推送调用的标识符赋值为所述第一标识符,并将所述待推送的消息推送应用推送给所述接收方;
[0029]所述接收方300,用于接收所述消息中间件推送的以所述第一标识符为标识符的消息推送应用。
[0030]在本发明的实施方式中,所述消息中间件200可包括:
[0031]第一检测模块,用于在消息中间件接收所述发送方发起的消息推送调用之前,检测当前执行环境是否为接收消息推送的执行环境,若不是接收消息推送的执行环境,则通过hess1n客户端生成所述消息推送调用的第一标识符。其中,检测当前执行环境是否为接收消息推送的执行环境可包括:在发送给接收方的消息推送调用中附加预定参数,所述预定参数为赋值参数,接收所述接收方反馈的对所述预定参数的响应,若所述响应验证正确,则是接收消息