消息队列中消息的处理方法、装置、设备及存储介质与流程

文档序号:33203419发布日期:2023-02-07 20:06阅读:43来源:国知局
消息队列中消息的处理方法、装置、设备及存储介质与流程

1.本公开涉及数据处理技术领域,具体涉及一种消息队列中消息的处理方法、装置、设备及存储介质。


背景技术:

2.消息队列已经逐渐成为企业系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步远程过程调用(remote procedure call,rpc)的主要手段之一。
3.当前在对项目进行功能测试时,通常会有同一时间不同的人员需要测试不同分支的情况,而由于测试环境只有一个,就需要协商排期。比如,在a分支测试之后进行b分支的测试,因而测试效率低下,且测试的成本比较高。而在使用消息队列时,我们无法控制一条消息去往哪类消费者中。因此,如何提供一种可以有效控制消息去向的方法显得尤为重要。


技术实现要素:

4.本公开提供了一种消息队列中消息的处理方法、装置、设备以及存储介质。
5.根据本公开的一方面,提供了一种消息队列中消息的处理方法,包括:
6.对获取的第一流量数据进行解析,以确定所述第一流量数据对应的第一染色标签,其中,所述第一染色标签用于表征所述第一流量数据对应的目标消费方;
7.根据所述第一染色标签,确定待生产的第一消息对应的第二染色标签;
8.基于所述第二染色标签及所述流量数据,生产第一消息;
9.将所述第一消息发送给消息中间件,以使所述消息中间件将所述第一消息加入消息队列。
10.根据本公开的另一方面,提供了一种消息队列中消息的处理装置,包括:
11.第一确定模块,用于对获取的第一流量数据进行解析,以确定所述第一流量数据对应的第一染色标签,其中,所述第一染色标签用于表征所述第一流量数据对应的目标消费方;
12.第二确定模块,用于根据所述第一染色标签,确定待生产的第一消息对应的第二染色标签;
13.第一生产模块,用于基于所述第二染色标签及所述流量数据,生产第一消息;
14.第一发送模块,用于将所述第一消息发送给消息中间件,以使所述消息中间件将所述第一消息加入消息队列。
15.根据本公开的第三方面,提供了一种电子设备,包括:
16.至少一个处理器;以及
17.与所述至少一个处理器通信连接的存储器;其中,
18.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述一方面实施例所述的方法。
19.根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其上存储有计算机程序,所述计算机指令用于使所述计算机执行上述一方面实施例所述的方法。
20.根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现上述一方面实施例所述的方法。
21.本公开所提供的消息队列中消息的处理方法、装置、设备以及存储介质,至少存在以下有益效果:
22.本公开实施例中,首先对获取的第一流量数据进行解析,以确定第一流量数据对应的第一染色标签,其中,第一染色标签用于表征第一流量数据的生产方,然后根据第一染色标签,确定待生产的第一消息对应的第二染色标签,之后基于第二染色标签及流量数据,生产第一消息,最后将第一消息发送给消息中间件,以使消息中间件将第一消息加入消息队列。由此,通过由消息生产方基于第一流量数据对应的染色标签,将生产的第一消息进行染色,并将染色后的第一消息发送给消息中间件,以使得消费方可以基于消息对应的第二染色标签进行消息的选择和消费,从而有效控制了消息去向,为多个服务的联调测试提供了条件。
23.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
24.附图用于更好地理解本方案,不构成对本公开的限定。其中:
25.图1是根据本公开提供的一种消息队列中消息的处理方法的流程示意图;
26.图2是根据本公开提供的另一种消息队列中消息的处理方法的流程示意图;
27.图3是根据本公开提供的另一种消息队列中消息的处理方法的流程示意图;
28.图4是根据本公开提供的另一种消息队列中消息的处理方法的流程示意图;
29.图5是根据本公开提供的另一种消息队列中消息的处理方法的流程示意图;
30.图5a是根据本公开提供的一种消息队列中消息的处理系统框架图;
31.图6是根据本公开提供的一种消息队列中消息的处理方法的结构框图;
32.图7是根据本公开提供的又一种消息队列中消息的处理方法的结构框图;
33.图8为本公开提供的电子设备的结构框图。
具体实施方式
34.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
35.本公开提供的一种消息队列中消息的处理方法,该方法可以由本公开提供的一种消息队列中消息的处理装置执行,也可以由本公开提供的电子设备执行,其中,电子设备可以包括但不限于台式电脑、平板电脑等终端设备,也可以是服务器,下面以由本公开提供的服务器来执行本公开提供的一种消息队列中消息的处理方法,而不作为对本公开的限定。
36.下面结合参考附图对本公开提供的消息队列中消息的处理方法、装置、计算机设备及存储介质进行详细描述。
37.图1是根据本公开一实施例的一种消息队列中消息的处理方法的流程示意图。
38.如图1所示,该消息队列中消息的处理方法可以由消息生产方执行,该方法可以包括以下步骤:
39.步骤101,对获取的第一流量数据进行解析,以确定第一流量数据对应的第一染色标签,其中,第一染色标签用于表征第一流量数据对应的目标消费方。
40.其中,流量数据可以为微服务系统内,服务和服务之间或者服务和外部系统之间的流动的数据。
41.其中,第一流量数据可以为超文本传输协议(hypertext transfer protocol,http)请求对应的流量数据,或者,也可以为rpc请求对应的流量数据,或者,还可以为与消费方的回调请求对应的流量数据,在此不进行限定。
42.本公开中,由于服务发起方是针对性的发起的服务,即其已知消息消费方,从而服务发起方即可给流量数据加上标签,以使消息生产方可以基于流量数据对应的染色标签,进行消息的生产。其中,已经加上标签的流量数据也可以称为是经过染色的流量数据。
43.可选的,消息生产方,可以对第一流量数据的属性信息进行解析,以获取其中的第一染色标签,或者,还可以根据其属性信息中的来源标识,确定其对应的第一染色标签。本公开对此不做限定。
44.步骤102,根据第一染色标签,确定待生产的第一消息对应的第二染色标签。
45.本公开中,为了保证根据第一流量数据生产的消息可以继续保留其来源信息,可以在确定第一染色标签之后,消息生产方可以根据第一染色标签,确定第一消息对应的第二染色标签。
46.可选的,第二染色标签,可以与第一染色标签相同,或者,也可以为与第一染色标签一一对应的另外的染色标签,本公开对此不做限定。
47.步骤103,基于第二染色标签及第一流量数据,生产第一消息。
48.具体的,消息生产方,可以根据第一流量数据,生成第一消息,并将第二染色标签注入第一消息的属性信息中。
49.可选的,在第一染色标签为预设标签的情况下,消息生产方可以确定与当前的运行环境对应的第六染色标签,然后将第六染色标签,确定为第一消息对应的第二染色标签。
50.其中,预设标签为预先确定的任一类型的标签。
51.需要说明的是,若流量在传递过程中,经过了跨线程操作,从而可能会丢失染色标签,因而生产方可以根据服务器的环境,重新确定染色标签。举例来说,若预设标签为基线环境对应的标签,而当前的生成方的运行环境为虚环境,即其对应的第六染色标签与预设标签不同,从而则可以将第六染色标签确定为第一消息所对应的第二染色标签,在此不进行限定。
52.其中,基线环境可以是指基础的测试环境。虚环境可以为依附于基础环境的弱隔离环境,与基线环境共享部分基础资源。每个服务必须有一个基线环境才能有虚环境,一个虚环境可以拥有任一染色标签的全部染色实例,且这些染色实例可以属于多个服务。另外,虚环境也可以称为泳道环境。
53.步骤104,将第一消息发送给消息中间件,以使消息中间件将第一消息加入消息队列。
54.其中,消息队列可以为消息中间件暂时储存消息的位置,可以进行一定程度的消息堆积,从而实现消息的临时缓冲,之后可以便于消费方获取消息。其中,消息队列可以为rabbitmq、rocketmq、activemq、kafka、zeromq、metamq等,在此不进行限定。
55.可选的,在将第一消息发送给消息中间件时,可以将第一消息及对应的目标主题发送给消息中间件,以便消息中间件可以基于第一消息对应的目标主题,将该第一消息加入对应的消息队列中,以便订阅了该主题的消费方,可以获取并消费该主题对应的各个消息。
56.需要说明的是,本公开中,由消息生产方在生产消息时,基于流量数据对应的染色标签将消息进行染色,使得消息队列中的消息均有对应的染色标签,进而消费方即可基于染色标签,进行消息的选择和消费,从而有效控制了消息的去向,可以有效节省多个服务间联调测试的时间,提高联调测试的效率。
57.本公开实施例中,首先对获取的第一流量数据进行解析,以确定第一流量数据对应的第一染色标签,其中,第一染色标签用于表征第一流量数据的生产方,然后根据第一染色标签,确定待生产的第一消息对应的第二染色标签,之后基于第二染色标签及流量数据,生产第一消息,最后将第一消息发送给消息中间件,以使消息中间件将第一消息加入消息队列。由此,通过由消息生产方基于第一流量数据对应的染色标签,将生产的第一消息进行染色,并将染色后的第一消息发送给消息中间件,以使得消费方可以基于消息对应的第二染色标签进行消息的选择和消费,从而有效控制了消息去向,为多个服务的联调测试提供了条件。
58.在一种可能的实现形式中,消息生产方生产的消息,可能为消费后,会进行再生产的消息,本公开中,为了保证再生产消息可以继承原消息的染色标签,可以将接收到的流量数据的标识及染色标签进行存储,以便后续进行消息再生产时使用。即,本公开可以包括:将第一流量数据的标识及第一染色标签,存入本地线程环境变量中。下面结合图2,对消息再生产的过程进行详细解释。
59.图2是根据本公开又一实施例的一种消息队列中消息的处理方法的流程示意图。
60.如图2所示,该消息队列中消息的处理方法可以包括以下步骤:
61.步骤201,响应于接收到任一消费方发送的回调请求,其中,回调请求中包含已消费的第二消息标识及第二流量数据。
62.其中,第二消息标识可以为已经消费的消息对应的消息标识,其中,第二消息标识可以携带在已经消费的消息中的头部位置,在此不进行限定。
63.其中,第二流量数据可以为消息再生产时需要用到的流量数据。
64.步骤202,确定与第二消息标识对应的目标流量数据标识。
65.其中,目标流量数据标识可以为与当前的第二消息标识相同的标识。
66.步骤203,从本地线程环境变量中,获取与目标流量数据标识对应的第三染色标签。
67.需要说明的是,本地线程环境变量可以包含当前正在处理的流量数据的标识及染色标签,从而消息生产方在收到消息再生产请求时,即可以将从本地线程环境变量中获取
与目标流量数据标识对应的第三染色标签。
68.步骤204,基于所述第二流量数据及所述第三染色标签,生产第三消息。
69.步骤205,将第三消息发送给消息中间件,以使消息中间件将第三消息加入消息队列。
70.需要说明的是,步骤204-205的具体实现方式可以参照上述实施例,在此不进行赘述。
71.本公开实施例中,首先响应于接收到任一消费方发送的回调请求,其中,回调请求中包含已消费的第二消息标识及第二流量数据,然后确定与第二消息标识对应的目标流量数据标识,之后从本地线程环境变量中,获取与目标流量数据标识对应的第三染色标签,然后基于所述第二流量数据及所述第三染色标签,生产第三消息,最后将第三消息发送给消息中间件,以使消息中间件将第三消息加入消息队列。由此,通过存储当前正在处理的流量数据的标识及染色标签,以便在消息再生产过程中,根据存储的染色标签,将再生产的消息进行染色,使得再生产的消息也有准确的染色标签,从而保证了再生产消息,也可以被消费方准确的选择和消费,进一步提高了对消息去向的有效控制。
72.在实际实现中,消息消费后再生产的过程,可能是单条消息消费后再生产,或者也可能是批量消息消费后再生产的,下面结合图3对批量消息消费后再生产的过程进行详细说明。
73.图3是根据本公开又一实施例的一种消息队列中消息的处理方法的流程示意图。
74.如图3所示,该消息队列中消息的处理方法可以包括以下步骤:
75.步骤301,根据获取的多个第三流量数据分别对应的第四染色标签,将多个第三流量数据进行聚合,以生成多个流量数据组,其中,每个流量数据组中的第三流量数据对应的第四染色标签相同。
76.需要说明的是,可以将第三流量数据按照染色标签进行分类,从而将相同的第三流量数据进行聚合,也即根据染色标签的类型对其进行分组,从而生成多个流量数据组。
77.步骤302,将每个流量数据组的标识及对应的第四染色标签,存入本地线程环境变量中。
78.具体的,根据每个流量数据组所对应的第四染色标签的不同,可以为其确定对应的标识,从而服务器可以将每个流量数据组的标识及对应的第四染色标签,存入本地线程环境变量中。
79.需要说明的是,本公开中,消息生产方可以根据对流量数据组的处理顺序,将每个流量数据组的标识及对应的第四染色标签进行依次存储。
80.举例来说,根据第四染色标签将多个第三流量数据进行聚合后,生成了2个流量数据组,进而消息生产方可以首先对第一个流量数据组进行处理,以生产其对应的多个消息,并将生成的多个消息发送给消息中间件以进行消息消费。并在第一个消息流量组对应的多个消息消费过程结束时,再将第二个流量数据组对应的染色标签及标识进行存储,以便第二个流量数据组对应的多个消息在消费再生产过程中,可以从本地线程环境变量中获取对应的染色标签。
81.步骤303,响应于接收到任一消费方发送的回调请求,其中,回调请求中包含已消费的多个第四消息标识及多个第四流量数据。
82.需要说明的是,每个第四消息标识可以对应一个第四流量数据,即每个第四消息对应一个用于生产新消息的流量数据,或者,也可以多个第四消息标识对应一个第四流量数据,即一个第四流量数据可以用于生产多个第四消息标识关联的再生产消息,本公开对此不做限定。
83.步骤304,确定与多个第四消息标识对应的目标流量数据组标识。
84.步骤305,从本地线程环境变量中,获取与目标流量数据组标识对应的第五染色标签。
85.可选的,多个第四消息标识对应的目标流量数据组标识可能相同,也可能不同,本公开对此不做限定。
86.需要说明的是,回调请求中,还可以包括每个第四消息标识对应的染色标签,之后消息生产方即可根据染色标签,将多个第四消息进行分类,以确定多个第四消息组。之后确定每个第四消息组对应的目标流量数据组标识,进而再确定对应的第五染色标签。
87.步骤306,基于多个第四流量数据及第五染色标签,分别生产多个第五消息。
88.需要说明的是,步骤304、305、306的具体实现方式可以参照上述实施例,在此不进行赘述。
89.本公开实施例中,首先根据获取的多个第三流量数据分别对应的第四染色标签,将多个第三流量数据进行聚合,以生成多个流量数据组,然后将每个流量数据组的标识及对应的第四染色标签,存入本地线程环境变量中,响应于接收到任一消费方发送的回调请求,之后确定与多个第四消息标识对应的目标流量数据组标识,并从本地线程环境变量中,获取与目标流量数据组标识对应的第五染色标签,最后基于多个第三流量数据及第五染色标签,分别生产多个第五消息。由此,通过将流量数据的染色标签以流量数据组的形式进行存储,以便在批量消息的再生产过程中,可以将再生产的批量消息进行染色,从而不仅降低了存储的数据量,而且保证了再生产消息,也可以被消费方准确的选择和消费,进一步提高了对消息去向的有效控制。
90.在一种可能实现的方式中,在将各个消息加入到消息队列之后,消息消费方可以根据已订阅的主题情况,选择进行消费的消息,下面将结合图4对上述过程进行详细说明。
91.图4是根据本公开又一实施例的一种消息队列中消息的处理方法的流程示意图。
92.如图4所示,该消息队列中消息的处理方法可以以消息消费方作为执行主体,可以包括以下步骤:
93.步骤401,获取消息队列中的各个消息及每个消息对应的染色标签。
94.其中,消费方可以为订阅主题并消费消息队列中存储的消息的服务方。
95.需要说明的是,若当前有多个消息队列,则消费方在获取消息队列中的各个消息时,可以根据消费方订阅的特定主题的消息队列,从各个消息队列中确定该特定主题的消息队列,进而获取该消息队列中各个消息以及每个消息对应的染色标签。或者,消息队列中间件可以根据各个消费方的订阅,将各个主题对应的消息队列中的消息,主动发送消费方,因而消费方可以获取消息队列中间件发送的消息队列中的各个消息及每个消息对应的染色标签。
96.步骤402,从各个消息中抽取染色标签与目标染色标签匹配的目标消息。
97.其中,目标消息可以为消息消费方选择待消费的消息。
98.需要说明的是,消息消费方可以首先根据当前运行环境的类型和/或当前的运行环境对应的染色标签,确定目标染色标签。
99.举例来说,可以预先设置,不同类型的运行环境对应不同的染色标签,之后每个消费方即可根据其自身的运行环境的类型,确定目标染色标签。
100.进而即可将消息队列中每个消息的染色标签与目标染色标签进行匹配,以确定目标消息。比如任一消费方对应的目标染色标签为a,从而该任一消费方即可将消息队列中染色标签为a的消息,确定为目标消息。
101.步骤403,对目标消息进行处理。
102.可选的,为了保证消息队列中的消息被可靠消费,本公开中,还可以将各个消息消费方中的一个确定为预设消费方,该预设消费方可以获取其他消费方的信息,并根据其他消费方的信息确定消息队列中任一消息无对应消费方的情况下,将该任一消息进行可靠消费。
103.即,本公开中还包括:接收当前的各个消费方对应的染色标签。
104.可选的,该消费方接收的各个消费对应的染色标签,可以是注册中心发送的,或者也可以是各个消费方发送的,本公开对此不做限定。
105.举例来说,预设的消费方已知的各个消费信息为:第一消费方对应染色标签a,第二消费方对应染色标签b,预设的消费方的染色标签为空。之后,预设的消费方获取到消息队列中包含10条消息,其中,有两条染色标签为a的消息,3条染色标签为b的消息,1条染色标签为c的消息及5条染色标签为空的消息,此时,该预设的消费方可以确定染色标签为c的消息当前无对应的消费方,从而其在消费与其自身染色标签对应的4条消息外,还会消息染色标签为c的消息。
106.本公开实施例中,首先获取消息队列中的各个消息及每个消息对应的染色标签,然后从各个消息中抽取染色标签与目标染色标签匹配的目标消息,之后对目标消息进行处理。由此,可以针对性的对消息队列中的目标消息进行处理,提升了消息的处理效率,降低了成本。
107.通过上述分析,本公开中为了保证消息队列中的各个消息都可以被可靠消息,可以由任一预设的消费方同步感知各个消费方的情况,下面结合图5对上述过程进行详细说明。
108.图5是根据本公开又一实施例的一种消息队列中消息的处理方法的流程示意图。
109.需要说明的是,本实施例提供的消息队列中消息的处理方法的执行主体,可以为预设的消息消费方,或者也可以为位于客户端处,但是与消息生产方及消息消费方彼此独立、且用于管理消息方信息的注册中心,本公开对此不做限定。本实施例以执行主体为注册中心为例,进行展开说明。
110.如图5所示,该消息队列中消息的处理方法可以包括以下步骤:
111.步骤501,接收消费方发送的注册请求,其中,注册请求包括消费方标识及对应的染色标签。
112.可以理解的是,在本公开的实施例中,消费方在被启动后,即可向注册中心发送注册请求,以使注册中心获知其标识及对应的染色标签。
113.步骤502,记录消费方的标识及对应的染色标签。
114.本公开中,在接收到了各个消费方的染色标签及订阅的主题标识后,即可将该关联关系进行存储,以便基于该信息,对消费方消息的消息进行控制。
115.本公开中,为了保证消息队列中的消息都可以被可靠消费,注册中心可以将已知的消费方信息同步给预设的消费方,从而使该预设的消费方可以感知其余各消费方的状况,进而可以在根据消息对应的染色标签与消费方对应的染色标签的匹配情况,确定消息队列中的消息无对应的消费方的情况下,对该消息进行可靠消费。
116.其中,预设消费方可以为运行环境为基线环境的消费方,本公开中可以在确定任一消费方的运行环境为基线环境的情况下,将其余各消费方对应的染色标签发送给该任一消费方。
117.进一步的,为了保证预设的消息消费方可以实时掌握各个消费方的在线状态,本公开中,注册中心还可以在任一消费信息变更的情况下,通过变更请求,更新预设的消费方侧的消费方信息。即本公开中,还可以包括:
118.接收变更请求,其中,变更请求中包括待变更的消费方标识;
119.根据变更请求,更新已记录的消费方的标识及对应的染色标签。
120.具体的,消费方在向注册中心注册后,注册中心即可对消费方的在线状态进行监测。比如,注册中心通过与消费方的心跳包对消费方的在线状态进行监测,若在一个连续时段内未获取到某一消费方的心跳包,则可以认为该消费方当前处于离线或者无效状态,即无法进行消息消费,从而即可向预设的消息消费方发送更新请求,以更新其存储的消息消费方信息。
121.或者,若由新的消息消费方被启动,此时新启动的消息消费方也会向注册中心发送注册请求,从而注册中心也可向预设的消息消费方发送更新请求,以更新其存储的消息消费方信息。
122.预设的消息消费方在接收到变更请求之后,即可以根据变更请求,将记录的消息消费方信息进行更新,比如,新增消息消费方、或者删除消息消费方等等。
123.本公开实施例中,通过将已知的消费方信息同步给预设的消费方,从而使该预设的消费方可以感知其余各消费方的状况,以保证消息队列中的消息可以被可靠消费,从而不仅提高了对消息去向的有效控制,而且保证了消息队列中的消息都可以被可靠消费。
124.下面结合图5a所示的消息队列中消息的处理系统框架图,对本公开提供的消息队列中消息的处理方法进行进一步的说明。
125.如图5a所示,该处理系统中包括三个消息生产方(producer)以及两个消费方。其中,一个消息生产方的运行环境为基线环境,运行在虚环境中的两个消息生产方的染色标签分别为feature1和feature2,且三个消息生产方分别向消息队列中的主题a(topica)中生产消息。另外,该系统中的两个消息消费方,均订阅了消息队列topica中的消息。
126.在实际实现中,当该系统中的消息消费方启动时,即可向注册中心(naming-service),发送注册请求,并把其对应的染色标签发送给注册中心,之后,注册中心即可将各个消息消费方的信息同步给预设的消息消费方,如图5a中的,运行在基线环境中的消息消费方。由图5a可知,运行在虚环境中的消息消费方对应的染色标签为feature1,即染色标签为feature2的消息生产方生产的消息,无对应的消息消费方,从而在消息消费过程中,运行在基线环境中的预设消费方,就会消费运行在基线环境中的消息生产方生产的消息,并
且由于染色标签为feature2的消息无对应的消费方,因此也会被预设的消费方消费。
127.通过上述分析可知,本公开中,通过在客户端处设立用于将消费方信息同步给预设消费方的注册中心,即可实现消息的环境隔离消费及去向的可靠控制。
128.为了实现上述实施例,本公开实施例还提出一种消息队列中消息的处理装置。
129.图6为本公开实施例提供的一种消息队列中消息的处理装置的结构框图。
130.如图6所示,该消息队列中消息的处理装置包括:第一确定模块610、第二确定模块620、第一生产模块630、第一发送模块640。
131.第一确定模块610,用于对获取的第一流量数据进行解析,以确定所述第一流量数据对应的第一染色标签,其中,所述第一染色标签用于表征所述第一流量数据对应的目标消费方;
132.第二确定模块620,用于根据所述第一染色标签,确定待生产的第一消息对应的第二染色标签;
133.第一生产模块630,用于基于所述第二染色标签及所述流量数据,生产第一消息;
134.第一发送模块640,用于将所述第一消息发送给消息中间件,以使所述消息中间件将所述第一加入消息队列。
135.可选的,该装置还包括:
136.第一储存模块,用于将所述第一流量数据的标识及所述第一染色标签,存入本地线程环境变量中。
137.可选的,该装置还包括:
138.第一回调模块,用于响应于接收到任一消费方发送的回调请求,其中,所述回调请求中包含已消费的第二消息标识及第二流量数据;
139.第三确定模块,确定与所述第二消息标识对应的目标流量数据标识;
140.第一获取模块,用于从所述本地线程环境变量中,获取与所述目标流量数据标识对应的第三染色标签;
141.第二生产模块,用于基于所述第二流量数据及所述第三染色标签,生产第三消息。
142.可选的,该装置还包括:
143.聚合模块,用于根据获取的多个第三流量数据分别对应的第四染色标签,将所述多个第三流量数据进行聚合,以生成多个流量数据组,其中,每个流量数据组中的第三流量数据对应的第四染色标签相同;
144.第二储存模块,用于将每个流量数据组的标识及对应的第四染色标签,存入本地线程环境变量中。
145.可选的,该装置还包括:
146.第二回调模块,用于响应于接收到任一消费方发送的回调请求,其中,所述回调请求中包含已消费的多个第四消息标识及多个第三流量数据;
147.第四确定模块,用于确定与所述多个第四消息标识对应的目标流量数据组标识;
148.第二获取模块,用于从所述本地线程环境变量中,获取与所述目标流量数据组标识对应的第五染色标签;
149.第三生产模块,用于基于所述多个第三流量数据及所述第五染色标签,分别生产多个第五消息。
150.可选的,该装置还包括:
151.第五确定模块,用于在所述第一染色标签为预设标签的情况下,确定与当前的运行环境对应的第六染色标签;
152.第六确定模块,用于将所述第六染色标签,确定为所述第一消息对应的第二染色标签。
153.可选的,该装置还包括:
154.第二发送模块,用于将所述第一消息及对应的目标主题发送给所述消息中间件。
155.本公开实施例中,首先对获取的第一流量数据进行解析,以确定第一流量数据对应的第一染色标签,其中,第一染色标签用于表征第一流量数据的生产方,然后根据第一染色标签,确定待生产的第一消息对应的第二染色标签,之后基于第二染色标签及流量数据,生产第一消息,最后将第一消息发送给消息中间件,以使消息中间件将第一消息加入消息队列。由此,通过由消息生产方基于第一流量数据对应的染色标签,将生产的第一消息进行染色,并将染色后的第一消息发送给消息中间件,以使得消费方可以基于消息对应的第二染色标签进行消息的选择和消费,从而有效控制了消息去向,为多个服务的联调测试提供了条件。
156.为了实现上述实施例,本公开实施例还提出另一种消息队列中消息的处理装置。
157.图7为本公开实施例提供的一种消息队列中消息的处理装置的结构框图。
158.如图7所示,该消息队列中消息的处理装置包括:第三获取模块710、第四获取模块720、处理模块730。
159.第三获取模块710,用于获取消息队列中的各个消息及每个消息对应的染色标签;
160.第四获取模块720,用于从所述各个消息中抽取染色标签与目标染色标签匹配的目标消息;
161.处理模块730,用于对所述目标消息进行处理。
162.可选的,所述第四获取模块,还用于:
163.第七确定模块,用于根据当前的运行环境的类型和/或所述当前的运行环境对应的染色标签,确定所述目标染色标签。
164.可选的,该装置还包括:
165.第三接收模块,用于接收当前的各个消费方对应的染色标签。
166.可选的,所述第四获取模块,具体用于:
167.第八确定模块,用于响应于所述各个消息中任一消息对应的染色标签与每个消费方对应的染色标签未匹配,确定所述任一消息为目标消息。
168.可选的,该装置还包括:
169.第四发送模块,用于发送注册请求,其中,所述注册请求中包含当前的运行环可选的,该装置还包括:
170.第一接收模块,用于接收消费方发送的注册请求,其中,所述注册请求包括所述消费方标识及对应的染色标签;
171.记录模块,用于记录所述消费方的标识与对应的染色标签。
172.第二接收模块,用于接收变更请求,其中,所述变更请求中包括待变更的消费方标识;
173.更新模块,用于根据所述变更请求,更新已记录的消费方标识及对应的染色标签。境对应的染色标签及订阅的主题标识。
174.本公开实施例中,首先获取消息队列中的各个消息及每个消息对应的染色标签,然后从各个消息中抽取染色标签与目标染色标签匹配的目标消息,之后对目标消息进行处理。由此,可以针对性的对消息队列中的目标消息进行处理,提升了消息的处理效率,降低了成本。
175.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
176.图8示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
177.如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(rom)802中的计算机程序或者从存储单元808加载到随机访问存储器(ram)803中的计算机程序,来执行各种适当的动作和处理。在ram 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、rom 802以及ram 803通过总线804彼此相连。输入/输出(i/o)接口805也连接至总线804。
178.设备800中的多个部件连接至i/o接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
179.计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如消息队列中消息的处理方法。例如,在一些实施例中,消息队列中消息的处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由rom 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到ram 803并由计算单元801执行时,可以执行上文描述的消息队列中消息的处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行消息队列中消息的处理方法。
180.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器
可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
181.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
182.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
183.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
184.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、互联网和区块链网络。
185.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务("virtual private server",或简称"vps")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
186.本公开实施例中,首先对获取的第一流量数据进行解析,以确定第一流量数据对应的第一染色标签,其中,第一染色标签用于表征第一流量数据的生产方,然后根据第一染色标签,确定待生产的第一消息对应的第二染色标签,之后基于第二染色标签及流量数据,生产第一消息,最后将第一消息发送给消息中间件,以使消息中间件将第一消息加入消息
队列。由此,通过由消息生产方基于第一流量数据对应的染色标签,将生产的第一消息进行染色,并将染色后的第一消息发送给消息中间件,以使得消费方可以基于消息对应的第二染色标签进行消息的选择和消费,从而有效控制了消息去向,为多个服务的联调测试提供了条件。
187.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
188.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1