一种消息处理方法、装置和设备与流程

未命名 09-24 阅读:55 评论:0


1.本技术涉及数据处理技术领域,尤其涉及一种消息处理方法、装置和设备。


背景技术:

2.消息中间件以自身低延迟、高并发、高可靠的特性受到了广泛的应用,基于消息队列的中间件包括消息生产者和消息消费者,可以实现消息生产者产生的消息(主题、标签等)的监听与接收,并将该消息发送至消息消费者进行消费。例如,云计算产品订购系统通过消息中间件可以获取资源模块(消息生产者)中不同云计算产品的各类消息,订单模块、计费模块等业务处理模块(消息消费者)从消息队列中间件中获取不同的消息实现对应的业务处理。
3.相关技术中,消费者终端通过在消费者类上添加消息监听器(即类监听器),实现对生产者生产的消息的监听,该方法分为两类:一类是一个消费者类接收一个主题下的一个标签,对该一个标签进行唯一的逻辑处理,即一个消费者类只有一个业务处理方法,消费者类会随着业务处理方法的增多而增多,当有多个消费者同时对消息进行消费时,难以保证业务处理的速度;另一类是一个消费者类中包括多个业务对应的处理方法,一个消费者类接收同一个主题下的不同标签,通过循环判断标签的类型,再根据标签消息对应的业务进行不同的逻辑处理,如此会增加消息处理的耦合性和复杂度,降低业务处理的效率。


技术实现要素:

4.为解决上述技术问题,本技术实施例期望提供一种消息处理方法,能够降低消息处理的耦合性和复杂度,提高业务处理的效率。
5.申请实施例的技术方案是这样实现的:
6.本技术实施例提供一种消息处理方法,包括:
7.获取消息消费者类对应的至少一个方法,获取所述至少一个方法各自对应的方法级监听器配置参数和配置参数优先级;
8.基于所述至少一个方法各自对应的方法级监听器配置参数和配置参数优先级,创建所述至少一个方法各自对应的方法级消息监听器;
9.通过所述至少一个方法各自对应的方法级消息监听器处理消息生产者发送的不同消息。
10.本技术实施例提供一种消息处理装置,包括:
11.获取模块,用于获取消息消费者类对应的至少一个方法,获取所述至少一个方法各自对应的方法级监听器配置参数和配置参数优先级;
12.创建模块,用于基于所述至少一个方法各自对应的方法级监听器配置参数和配置参数优先级,创建所述至少一个方法各自对应的方法级消息监听器;
13.处理模块,用于通过所述至少一个方法各自对应的方法级消息监听器处理消息生产者发送的不同消息。
14.本技术实施例提供一种消息处理设备,包括:
15.存储器,用于存储可执行消息处理指令;
16.处理器,用于执行所述存储器中存储的可执行消息处理指令时,实现权利要求本技术实施例提供的消息处理方法。
17.本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行消息处理指令,所述计算机可执行消息处理指令配置为执行本技术实施例提供的消息处理方法。
18.本技术实施例提供一种消息处理方法、装置、设备和计算机可读存储介质,采用本技术方案,首先,获取消息消费者类对应的至少一个方法,以及各个方法对应的方法级监听器配置参数和配置参数优先级;然后,基于各个方法对应的方法级消息监听器配置参数和配置参数优先级,创建各个方法对应的方法级消息监听器;最后,通过各个对应的方法级消息监听器处理消息生产者发送的不同消息。如此,根据方法级消息监听器配置参数和配置参数优先级,建立各个业务处理方法对应的方法级的消息监听器,使得每个业务处理方法可独立的完成消息的处理,做到消息和业务处理方法处理准确匹配,逻辑唯一,从而降低消息处理的耦合性和复杂度,提高业务处理的效率。
附图说明
19.图1为本技术实施例提供的一种类监听器的消息处理的技术方案模型示意图;
20.图2为申请实施例提供的一种消息处理方法流程示意图;
21.图3为本技术实施例提供的一种目标监听器配置参数确定方法流程图;
22.图4为本技术实施例提供的一种基于rocket mq的方法级消息监听器的消息处理方法流程示意图;
23.图5为本技术实施例提供的一种基于rocket mq的方法级消息监听器的消息处理方法流程图;
24.图6为本技术实施例提供的一种方法级消息监听器的消息处理的技术方案模型示意图。
25.图7为本技术实施例提供的一种消息处理装置的组成结构示意图;
26.图8为本技术实施例提供的一种消息处理设备的组成结构示意图。
具体实施方式
27.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。
28.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,所描述的实施例不应视为对本技术的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
29.在以下的描述中,涉及到“一些实施例\另一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例\另一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
30.在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代
表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。
31.除非另有定义,本技术所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本技术中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
32.随着云计算的不断发展,充分利用云环境提供的自动伸缩能力,并与特定云供应商实现松散的耦合,这已成为一个挑战,“云原生”这个概念应运而生。云原生应用能充分利用云计算模型带来的各种优势,而微服务是其中的一种重要并且流行的实现形式。
33.在目前的公有云、私有云等云服务中多数都是采用可以协同工作的小型、专注、自治的微服务,且不同微服务模块之间有很清晰的服务边界实现,意味着它们之间互相通信的消息沟通成本变的越来越高,云服务中的微服务业需求和处理逻辑越来越复杂,对功能之间的耦合度低、复杂度低、高性能、低时延、高容错性、高可用性、高扩展性、高可靠性、可维护性等需求要求越来越高,传统的同步调用显然不能满足微服务多变的复杂环境,所以异步的消息驱动,分布式消息中间件rocket mq应运而生,使不同的微服务模块之间的通信就变成了消息的生产-监听-接收-消费,消息的生产者和消费者之间是松散的耦合。
34.消息队列rocket mq支持发布和订阅模型,消息生产者producer应用创建主题topic并将消息发送到主题topic。消息消费者consumer应用创建对主题topic的订阅以便从其接收消息。消息消费者,也称为消息订阅者,负责接收并消费消息。消费者consumer消费消息的必要条件是接收到消息,即能接收订阅到生产者consumer生产的消息。
35.消费者端通过注册消息监听器listener监听生产者生产的消息,即消息监听。在rocket mq的技术实现中,为了实现消费者可以监听到生产者生产的消息,是通过在类上面添加消息监听器listener来实现,消费者实例必须满足下面两个条件:(1)消费者类上必须有消费者监听器注解,其中@rocket mq message listener作用在类上;(2)消费者类必须实现接口rocket mq listener,即implements rocket mq listener。
36.相关技术中,消费者监听消息使用的是类监听器,即原生支持的类监听器注解@rocket mq message listener作用在类上,即是作用范围是类,通过设置服务器name server、主题topic、标签tag等来监听、过滤、接收消息,具体的方案模型如下图1所示。
37.由图1可以看出,类监听器对应的一种方式是每一个消费者类实现接口类,只监听一个主题下的一个标签类型的消息,然后进行准确唯一的逻辑处理,实际上一个消费者类中会存在很多的业务处理方法,实现不同的业务功能逻辑,这样的业务处理方法存在一定的弊端,为了做到消息的处理,一个消费者类中只能有一个业务处理方法,消费者类会随着业务处理方法的增多变的很多,同时因为消费者组是全局唯一的,导致消费者组也会随之增多,无形中增加了消费者实例的复杂度,当有多个消费者组或消费者同时对消息进行消费时,会降低业务处理的速度。
38.另外一种方式是一个消费者类接收同一个主题(topic)下的不同标签(tag)消息,通过循环判断标签(tag)的类型,然后再根据消息对应的不同业务场景去做逻辑处理,这样的方式使代码的复杂度明显的上升,耦合性增大,降低了代码的扩展性和适配性,从而难以保证业务处理的效率,也不便于不同业务之间的维护管理。
39.基于相关技术中的上述问题,本技术实施例提供了一种消息处理方法,该方法能够降低消息处理的耦合性和复杂度,提高业务处理的效率。
40.消息中间件可以是kafka消息中间件、rabbit mq消息中间件、rocket mq消息中间件等,以下以rocket mq消息中间件为例对说明本技术实施例提供的消息处理方法,如图2所示,为本技术实施例提供的一种消息处理方法流程示意图,该方法包括以下步骤:
41.s101、获取消息消费者类对应的至少一个方法,获取至少一个方法各自对应的方法级监听器配置参数和配置参数优先级。
42.需要说明的是,消息消费者是rocket mq消息中间件的重要组成部分,消息消费者类可以是消息消费者对应的方法类,消息消费者类可以由开发人员设置,消息消费者类可以接收不同的消息,并通过消息消费者类对应的方法对消息进行处理。消息消费者类中可以定义一个或多个方法,不同的方法可以对消息进行不同的处理,例如,对于电商系统,消息消费者类可以获取商品信息(消息),商品信息可以是商品的类别、商品的价格等消息,对应的方法可以是基于商品的类别生成商品的类别数量;可以是基于商品的价格,生成消费订单等。
43.在一些实施例中,各个方法对应的方法级监听器配置参数包括至少一个,方法级监听器配置参数可以包括名称服务器name server、主题topic、标签tag、消费者组consumer group、消费模式consume mode、消息模式message model、最大消费线程数consume thread max、最大消费超时时间consume timeout等参数,方法级监听器配置参数作用于方法上,通过设置方法级监听器配置参数可以确定不同方法所需消息的数量、类型、内容等。
44.在一些实施例中,不同方法对应的方法级监听器配置参数的个数可能不同,也可能相同,当多个方法各自对应的方法级消息监听器配置参数的个数相同、类型相同时,多个方法各自对应的方法级消息监听器配置参数的设置值可能相同,也可能不同,当多个方法各自对应的方法级监听器配置参数的设置值均相同时,多个方法接收到的消息也相同,对消息的处理逻辑可能不同。
45.在一些实施例中,配置参数优先级可以是预先设定的,例如在实际中,可以由开发人员进行设置,配置参数优先级可以是不同级别的配置参数对应的优先级,例如当配置参数的级别包括全局级、类级别和方法级别时,配置参数优先级可以是方法级配置参数大于类级别配置参数,类级别配置参数大于全局级配置参数。
46.s102、基于至少一个方法各自对应的方法级监听器配置参数和配置参数优先级,创建至少一个方法各自对应的方法级消息监听器。
47.需要说明的是,方法级消息监听器用于监听和接收生产者生产的消息,在实际中,可以定义方法级消息监听器注解@rocket mq method message listener,在消费者类中的不同方法上使用方法级监听器注解,方法级监听器注解作用于方法上,通过在方法级监听器注解中设置监听器配置参数,可以实现方法级消息监听器对消息的监听和接收。
48.在一些实施例中,在获取了各个方法对应的方法级监听器配置参数和配置参数优先级之后,便可以基于方法级监听器配置参数和配置参数优先级,创建各个方法对应的方法级消息监听器。
49.s103、通过至少一个方法各自对应的方法级消息监听器处理消息生产者发送的不
同消息。
50.在一些实施例中,由于不同的方法对应的方法级监听器配置参数可能不同,因此,不同方法对应的方法级消息监听器接收到的消息也可能不同,在一些实施例中,对生产者发送的消息的处理可以包括过滤处理和分类处理。
51.示例性地,例如,方法级消息监听器a和方法级消息监听器b各自对应的方法级监听器配置参数中除了主题不同,其余均相同,方法级消息监听器a和方法级消息监听器b对应的主题均为电子产品,但是方法级消息监听器a对应的主题为手机,而方法级消息监听器b对应的主题为电脑,方法级消息监听器a接收到生产者生产的各类电子产品时,会对除过手机的其他电子产品进行过滤,并对接收到的手机进行分类;方法级消息监听器a接收到生产者生产的各类电子产品时,会对除过手机的其他电子产品进行过滤,并对接收到的手机进行分类;方法级消息监听器b接收到生产者生产的各类电子产品时,会对除过电脑的其他电子产品进行过滤,并对接收到的电脑进行分类。
52.在本技术实施例提供的消息处理方法中,首先,获取消息消费者类对应的至少一个方法,以及各个方法对应的方法级监听器配置参数和配置参数优先级;然后,基于各个方法对应的方法级消息监听器配置参数和配置参数优先级,创建各个方法对应的方法级消息监听器;最后,通过各个对应的方法级消息监听器处理消息生产者发送的不同消息。如此,根据方法级消息监听器配置参数和配置参数优先级,建立各个业务处理方法对应的方法级的消息监听器,使得每个业务处理方法可独立的完成消息的处理,做到消息和业务处理方法处理准确匹配,逻辑唯一,从而降低消息处理的耦合性和复杂度,提高业务处理的效率。
53.在本技术的一些实施例中,基于至少一个方法各自对应的方法级监听器配置参数和配置参数优先级,创建至少一个方法各自对应的方法级消息监听器,即步骤s102还可以通过下述步骤s1201至步骤s1203实现,以下对各个步骤进行详细说明。
54.s1201、基于配置参数优先级,获取消息消费者类对应的类级别监听器配置参数和全局配置参数。
55.在一些实施例中,在获取了方法级监听器配置参数之后,进一步地,可以根据配置参数优先级获取消息消费者类对应的类级别监听器配置参数和全局配置参数,在实际中,若配置参数的优先级为类级别大于全局级别,则在获取消费者类对应的类级别监听器配置参数和全局配置参数时,可以是优先获取类级别监听器配置参数,若类级别监听器配置参数不满足要求时,再获取全局配置参数。
56.s1202、基于至少一个方法各自对应的方法级监听器配置参数、类级别监听器配置参数和全局配置参数,确定至少一个方法各自对应的目标监听器配置参数。
57.在一些实施例中,在获取了各个方法对应的方法级监听器配置参数、类级别监听器配置参数和全局配置参数后,可以根据方法级监听器配置参数、类级别监听器配置参数和全局配置参数,确定每个方法对应的目标监听器配置参数。在实际中,目标监听器配置参数可以包括方法级监听器配置参数、类级别监听器配置参数和全局配置参数中的至少一个,可以是方法级监听器配置参数、类级别监听器配置参数和全局配置参数的组合,例如,若目标监听器配置参数包括五个,其中的三个可能是方法级监听器配置参数,另外两个可能是类级别监听器配置参数,当然此处只是示例性说明,本技术实施例对目标监听器配置参数的组合方式不做限定。
58.s1203、基于至少一个方法各自对应的目标监听器配置参数,创建至少一个方法各自对应的方法级消息监听器。
59.在一些实施例中,在获得了各个方法对应的目标监听器配置参数之后,便可以基于目标监听器配置参数确定各个方法对应的方法级消息监听器,基于目标监听器配置参数可以确定各个方法对应可以获取的消息的类型、内容等,基于目标监听器配置参数创建的方法级消息监听器可以监听和接收各个方法各自需要的消息。
60.如图3所示为本技术实施例提供的一种目标监听器配置参数确定方法流程图,在本技术的一些实施例中,配置参数优先级从高到低依次可以为方法级监听器配置参数、类级别监听器配置参数和全局配置参数,基于此,基于至少一个方法各自对应的方法级监听器配置参数、类级别监听器配置参数和全局配置参数,确定至少一个方法各自对应的目标监听器配置参数,即步骤s1202还可以通过下述步骤s201至步骤s215来实现,以下对各个步骤进行详细说明。
61.s201、获取消息消费者类中第i个方法的每个方法级监听器配置参数对应的目标配置参数。
62.需要说明的是,目标配置参数可以是由开发人员设定的配置参数,目标配置参数可以根据方法所执行的功能进行确定,例如,若方法执行的功能是对生成用户购买商品的订单信息,则对应的目标配置参数可能包括主题为用户购买商品的数量、价格等信息。
63.在一些实施例中,一个方法的方法级监听器配置参数可以包括一个或多个,当方法级监听器配置参数包括多个时,在获取一个方法的方法级监听器配置参数时,需要获取该方法的每个方法级监听器配置参数对应的目标配置参数。在一些实施例中,若消息消费者类中包括n个方法,其中n为大于或等于1的正整数,可以获取消息消费类中第i(i=1,2,...,n)个方法的每个监听器配置参数对应的目标配置参数。
64.s202、判断第i个方法的每个方法级监听器配置参数与各自对应的目标配置参数是否均满足一致性条件。
65.在一些实施例中,一致性条件可以是方法级监听器配置参数与对应的目标配置参数相同,例如,若第i个方法的方法级监听器配置参数包括名称服务器name server、主题topic、标签tag三个,主题为洗漱用品,标签为毛巾;目标配置参数也包括名称服务器name server、主题topic、标签tag三个,名称服务器、主题和标签各自对应的参数设置与方法级监听器配置参数中的设置一致,则可以确定第i个方法的每个方法级监听器配置参数与各自对应的目标配置参数均满足一致性条件。
66.在一些实施例中,若第i个方法的每个方法级监听器配置参数与各自对应的目标配置参数均满足一致性条件,则进入步骤s203;反之,则进入步骤s204。
67.s203、将第i个方法对应的方法监听器配置参数确定为目标监听器配置参数。
68.在一些实施例中,如果确定第i个方法的每个方法级监听器配置参数与各自对应的目标配置参数均满足一致性条件,则可以将第i个方法对应的方法监听器配置参数确定为目标监听器配置参数。
69.s204、确定第i个方法对应的方法级监听器配置参数中存在与对应的目标配置参数满足一致性条件的第一配置参数,且存在与对应的目标配置参数不满足一致性条件的其他配置参数,获取类级别监听器配置参数。
70.在一些实施例中,如果第i个方法的每个方法级监听器配置参数与各自对应的目标配置参数是并非均满足一致性条件,且确定第i个方法对应的方法级监听器配置参数中存在与对应的目标配置参数满足一致性条件的第一配置参数,也存在与对应的目标配置参数不满足一致性条件的其他配置参数,即第i个方法对应的方法级监听器配置参数中的一些配置参数与对应的目标配置参数相同,一些配置参数与对应的目标配置参数相同,说明完全基于第i个方法的每个方法级监听器配置参数并不能直接确定第i个方法对应的目标监听器配置参数,此时,可以进一步获取类级别监听器配置参数。
71.s205、判断类级别监听器配置参数与第一其他目标配置参数是否满足一致性条件。
72.需要说明的是,第一其他目标配置参数可以为第i个方法的方法级监听器配置参数对应的目标配置参数中,除去与第一配置参数满足一致性条件的配置参数。
73.在一些实施例中,在获得了类级别监听器配置参数之后,如果判断类级别监听器配置参数与第一其他目标配置参数满足一致性条件,且确定类级别监听器配置参数中存在与第一其他目标配置参数满足一致性条件的第二配置参数,则可以进入步骤s206;反之,则进入步骤s211。
74.s206、判断第二配置参数的个数与第一配置参数的个数之和是否等于第i个方法对应的方法级监听器配置参数的个数。
75.在一些实施例中,如果判断第二配置参数的个数与第一配置参数的个数之和等于第i个方法对应的方法级监听器配置参数的个数,可以执行步骤s207;反之,若第二配置参数的个数与第一配置参数的个数之和不等于第i个方法对应的方法级监听器配置参数的个数,且第二配置参数的个数与第一配置参数的个数之和小于第i个方法对应的方法级监听器配置参数的个数,则可以执行步骤s208。
76.s207、将第一配置参数和第二配置参数,确定为第i个方法对应的目标监听器配置参数。
77.在一些实施例中,第一配置参数可以是第i个方法对应的方法级监听器配置参数中与对应的目标配置参数相同的配置参数,第二配置参数可以是第i个方法对应的类级别监听器配置参数中与对应的第一其他目标配置参数相同的配置参数,如果第二配置参数的个数与第一配置参数的个数之和等于第i个方法对应的方法级监听器配置参数的个数,则说明第i个方法对应的目标监听器配置参数可以由方法级监听器配置参数和类级别监听器配置参数组合获得,因此可以将第一配置参数和第二配置参数,确定为第i个方法对应的目标监听器配置参数。
78.s208、获取全局配置参数。
79.在一些实施例中,如果第二配置参数的个数与第一配置参数的个数之和小于第i个方法对应的方法级监听器配置参数的个数,则说明即使将方法级监听器配置参数和类级别监听器配置参数进行组合也无法获得第i个方法对应的目标监听器配置参数,此时,可以获取全局配置参数,以进一步确定全局配置参数中是否有与对应的目标监听器配置参数满足一致性条件的配置参数。
80.s209、确定全局配置参数中存在与第二其他目标配置参数满足一致性条件的第三配置参数,判断第一配置参数的个数、第二配置参数的个数和第三配置参数的个数之和是
否等于第i个方法对应的方法级监听器配置参数的个数。
81.在一些实施例中,第二其他目标配置参数为第i个方法的方法级监听器配置参数对应的目标配置参数中,除去与第一配置参数、第二配置参数满足一致性条件的配置参数。当确定第一配置参数的个数、第二配置参数的个数和第三配置参数的个数之和等于第i个方法对应的方法级监听器配置参数的个数时,则可以执行步骤s210;反之,则进入步骤s215。
82.s210、将第一配置参数、第二配置参数和第三配置参数,确定为第i个方法对应的目标监听器配置参数。
83.在一些实施例中,当确定第一配置参数、第二配置参数和第三配置参数均和对应的目标配置参数相同,其中,第一配置参数、第二配置参数和第三配置参数互不相同,且第一配置参数的个数、第二配置参数的个数和第三配置参数的个数之和等于第i个方法对应的方法级监听器配置参数的个数,则说明目标监听器配置参数的可以由第一配置参数、第二配置参数和第三配置参数组合获得,此时,可以将第一配置参数、第二配置参数和第三配置参数确定为第i个方法对应的目标监听器配置参数。
84.s211、获取全局配置参数。
85.在一些实施例中,当类级别监听器配置参数与第一其他目标配置参数不满足一致性条件,说明类级别监听器配置参数中不存在与第一目标配置参数相同的配置参数,此时可以获取全局配置参数,判断全局配置参数中是否存在与第一其他目标配置参数相同的配置参数。
86.s212、确定全局配置参数与第一其他目标配置参数是否满足一致性条件。
87.若确定全局配置参数与第一其他目标配置参数满足一致性条件时,可以执行步骤s213;反之,则执行步骤s215。
88.s213、确定全局配置参数中存在与第一其他目标配置参数满足一致性条件的第三配置参数,判断第三配置参数的个数与第一配置参数的个数之和是否等于第i个方法对应的方法级监听器配置参数的个数。
89.当确定全局配置参数中存在与第一其他目标配置参数满足一致性条件的第三配置参数,且判断第三配置参数的个数与第一配置参数的个数之后等于第i个方法对应的方法级监听器配置参数的个数时,则可以执行步骤s214;反之,则执行步骤s215。
90.s214、将第一配置参数和第三配置参数,确定为第i个方法对应的目标监听器配置参数。
91.在一些实施例中,第一配置参数为与对应目标配置参数相同的配置参数,第三配置参数为与对应第一其他目标参数相同的配置参数,且确定第三配置参数的个数与第一配置参数的个数之后等于第i个方法对应的方法级监听器配置参数的个数,则说明目标监听器配置参数可以由第一配置参数和第三配置参数组合得到,因此,可以将第一配置参数和第三配置参数确定为第i个方法对应的目标监听器配置参数。
92.s215、对第i个方法的每个方法级监听器配置参数对应的目标配置参数进行更新,获得更新后的目标配置参数。
93.在一些实施例中,如果基于第i个方法的方法级监听器配置参数、类级别监听器配置参数或全局配置参数,与对应的目标监听器配置参数均不满足一致性条件;或者将第i个
方法的方法级监听器配置参数、类级别监听器配置参数和全局配置参数中的至少两类配置参数进行组合后无法获得与目标监听器配置参数满足一致性条件的配置参数,则可以对第i个方法的每个方法级监听器配置参数对应的目标配置参数进行更新,以获得更新后的目标配置参数。
94.s216、确定第i个方法的每个方法级监听器配置参数与各自对应的更新后的目标配置参数均满足一致性条件,将第i个方法对应的方法级监听器配置参数确定为目标监听器配置参数。
95.在一些实施例中,当确定第i个方法的每个方法级监听器配置参数与各自对应的更新后的目标配置参数均满足一致性条件,可以说明第i个方法的每个方法级监听器配置参数与各自对应的更新后的目标配置参数均相同,此时可以将第i个方法对应的方法级监听器配置参数作为目标监听器配置参数。
96.可以理解的是,通过基于至少一个方法各自对应的方法级监听器配置参数、类级别监听器配置参数和全局配置参数,以及方法级监听器配置参数、类级别监听器配置参数和全局配置参数对应的配置参数优先级,可以获得方法级监听器配置参数、类级别监听器配置参数和全局配置参数中的至少一类配置参数组合的目标监听器配置参数,进而基于各个方法对应的目标监听器配置参数,创建各个方法各自对应的方法级消息监听器,实现每个方法独立地完成消息的监听接收,做到消息和功能方法处理准确匹配,逻辑唯一,从而提高各个功能方法对应业务处理的效率。
97.在本技术的一些实施例中,在基于至少一个方法各自对应的方法级监听器配置参数和配置参数优先级,创建至少一个方法各自对应的方法级消息监听器,即步骤s102之后,还可以执行下述步骤s301至步骤s303,以下对各个步骤进行详细说明。
98.s301、获取至少一个方法各自对应的方法级消息监听器接收到的第一消息。
99.需要说明的是,第一消息可以是消息生产者生产的消息,各个方法对应的方法级消息监听器可以对生产者生产的消息进行监听并接收,在一些实施例中,不同方法各自对应的方法级消息监听器接收到的第一消息可能完全不同,可能部分相同,也可能完全相同。
100.s302、通过至少一个方法各自对应的方法级消息监听器对第一消息进行预处理,得到至少一个方法各自对应的预处理后的第一消息。
101.在一实施例中,预处理包括对第一消息进行过滤处理、分类处理中的至少之一。当不同方法各自对应的方法级消息监听器获得了第一消息后,可以对第一消息进行预处理,例如,当方法级消息监听器获得了主题为电子产品的消息,且方法级监听器配置参数中设置的标签为家用电器时,方法级消息监听器可以将接收到的消息中不属于家用电器的电子产品过滤或删除,并对各类家用电器进行分类。
102.s303、对至少一个方法各自对应的预处理后的第一消息进行逻辑处理,获得消息处理结果,并发送消息处理结果。
103.在一些实施例中,在对第一消息进行预处理之后,可以通过各个方法对应的功能逻辑对预处理后的第一消息进行处理,并获得消息处理结果。例如,若第一消息包括用户购买的多个商品信息,若方法对应的功能逻辑是确定消费总额,则可以基于用户购买的多个商品的价格信息,确定出各个商品的费用总和,即获得了消息处理结果。
104.在一些实施例中,当获得了消息处理结果之后,可以将获得的结果发送至用户终
端,以将消息处理结果反馈给用户。
105.在本技术实施例中,获取消息消费者类对应的至少一个方法,以及各个方法对应的方法级监听器配置参数和配置参数优先级;然后,基于各个方法对应的方法级消息监听器配置参数和配置参数优先级,创建各个方法对应的方法级消息监听器;最后,通过各个对应的方法级消息监听器处理消息生产者发送的不同消息。如此,根据方法级消息监听器配置参数和配置参数优先级,建立各个业务处理方法对应的方法级的消息监听器,使得每个业务处理方法可独立的完成消息的处理,做到消息和业务处理方法处理准确匹配,逻辑唯一,从而降低消息处理的耦合性和复杂度,提高业务处理的效率。
106.下面,对本技术实施例在实际应用场景中的实现过程进行介绍。
107.在一些实施例中,如图4所示,为本技术实施例提供的一种基于rocket mq的方法级消息监听器的消息处理方法流程示意图。本技术实施例提供的基于rocket mq的方法级消息监听器的消息处理方法可以通过下述的步骤s401至步骤s404来实现,以下对各个步骤进行详细说明。
108.s401、获取消费者全局参数(全局配置参数)、类级别消息监听器参数(类级别监听器配置参数)、方法级别监听器参数(方法级监听器配置参数),获取配置参数优先级。
109.如图5所示,为本技术提供的基于rocket mq的方法级消息监听器的消息处理方法流程图,在一些实施例中,在获取消费者全局参数、类级别消息监听器参数、方法级别监听器参数之前,还可以创建方法级别的消息监听器注解。在实际中,可以由开发人员对方法级别的消息监听器注解@rocket mq method message listener,名称服务器name server、主题topic、标签tag、消费者组consumer group、消费模式consume mode,消息模式message model,最大消费线程数consume thread max,最大消费超时时间consume timeout等一系列参数进行设置;在消息消费者类中的方法上使用监听器注解,并在监听器注解中设置必要的配置参数,如名称服务器、主题、标签等对应的内容;当java项目启动后,方法监听器探测器会扫描所有监听器注解的方法,并提交到spring生命周期管理,之后便可以获取消费者全局参数、类级别消息监听器参数、方法级别监听器参数。
110.在一些实施例中,配置参数优先级可以是:方法级》类级别》全局级别(配置参数优先级从高到低依次为方法级监听器配置参数、类级别监听器配置参数和全局配置参数),配置参数优先级可以是预先设定的,可以由开发人员进行设定。在一些实施例中,如图6所示,消息消费者类对应一个类级别的消息监听器注解,消息消费者类可能包括多个方法,例如图6中所示的消费者方法1至消费者方法m,其中,m为大于1的整数,每个方法对应有方法级监听器注解,在获取方法级别监听器参数时,可以获取消息消费者类中每个方法对应的方法级别监听器参数。此外,由于方法级别监听器注解作用于消息消费者类中的方法上,各个方法对应的方法级别监听器参数可能不同。
111.s402、基于消费者的全局参数、类级别消息监听器参数、方法级别监听器参数和配置参数优先级,确定方法级消息监听器对应的消费者参数(确定至少一个方法各自对应的目标监听器配置参数)。
112.在一些实施例中,当配置参数优先级从高到低依次为:方法级、类级别、全局级别时,高优先级配置覆盖低优先级配置,在获取了消费者的各个方法对应的方法级监听器配置参数、类级别消息监听器参数、全局参数之后,可以根据配置优先级确定各个方法对应的
方法级消息监听器对应的消费者参数。
113.s403、基于方法级消息监听器对应的消费者参数,创建方法级消息监听器(基于至少一个方法各自对应的目标监听器配置参数,创建至少一个方法各自对应的方法级消息监听器)。
114.在创建方法级消息监听器时,首先获取并检查方法级别监听器中的配置参数是否满足每个消费者需要的参数,如果满足,则以该配置创建消费者的方法消息监听器,然后如果方法级别监听器中的配置参数不满足,则获取和检查是否存在类级别监听器,且其参数是否存在方法级监听器不满足消费者需要的配置参数,如果存在,则以类级别监听器的参数补充,其他参数仍以方法级监听器参数为准,然后以组合配置创建消费者的方法消息监听器;如果不存在类级别的消息监听器或者类级别的消息监听器的配置参数仍不能满足要求,则获取和检查是否存在消费者全局配置,如果存在,检查其参数是否存在方法级监听器不满足消费者需要的参数,如果存在,则以全局参数补充,其他参数仍以方法级监听器参数为准,然后创建消费者的方法级消息监听器;如果不存在全局配置或者全局配置参数仍不能满足要求,则无法创建消费者方法级监听器和消费者,可以对消费者需要的参数进行更新或修正,直至确定出满足消费者需要的方法级监听器。上述的过程使方法级监听器兼容类级监听器,可独立存在,也可共同存在。
115.可以理解的是,在本技术实施例中,方法级消息监听器直接作用在方法上,每个方法可独立的完成消息的监听接收,做到消息和功能方法处理准确匹配,逻辑唯一,可通过方法级别的监听实现在一个消费者类中对不同主题、标签的消息的监听,无需进行同一个主题下的不同标签的循环判断,直接明确的监听某个标签类型的消息,处理唯一的逻辑,逻辑上不存在二义性,降低了消息处理的耦合性和复杂度,便于后期的维护。
116.s404、通过方法级消息监听器处理生产者生产的消息。
117.在一些实施例中,在创建好方法级消息监听器后,根据方法级消息监听器对应的消费者参数构建每个方法消息监听器的消费者,注册、启动消费者,实现消息的监听和接收;每个方法对应的方法级消息监听器监听生产者生产的不同主题、标签的消息,并对接收到的消息进行过滤和分类(对第一消息进行预处理)。
118.在另一些实施例中,在方法监听器对生产者生产的消息处理之后,并由消费者对应的方法进行消息的逻辑处理,实现各个方法对应的不同功能。在一些实施例中,当服务停止时自动停止根据方法监听器注册启动的消费者。
119.可以理解的是,在本技术实施例中,基于方法级别的监听器作用范围是方法,消费者类中可以有多个功能方法,每个方法可以归属不同的消费者组,且每个方法的配置是可以独立配置,也可以属于同一个消费者组,有相同的配置,配置可以很灵活,且可以减少消费者组,减少消费者实例的性能消耗,从而提高了消息处理的速度。
120.本技术还提供一种消息处理装置,图7为本技术实施例提供的一种消息处理装置的组成结构示意图,如图7所示,所述消息处理装置500包括:
121.获取模块501,用于获取消息消费者类对应的至少一个方法,获取所述至少一个方法各自对应的方法级监听器配置参数和配置参数优先级;
122.创建模块502,用于基于所述至少一个方法各自对应的方法级监听器配置参数和配置参数优先级,创建所述至少一个方法各自对应的方法级消息监听器;
123.处理模块503,用于通过所述至少一个方法各自对应的方法级消息监听器处理消息生产者发送的不同消息。
124.需要说明的是,本技术实施例消息处理装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本装置实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
125.需要说明的是,本技术实施例中,如果以软件功能模块的形式实现上述的控制方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本技术实施例不限制于任何特定的硬件和软件结合。
126.相应地,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中提供的消息处理方法。
127.本技术实施例还提供一种消息处理设备,图8为本技术实施例提供的一种消息处理设备的组成结构示意图,如图8所示,所述消息处理设备600包括:存储器601、处理器602、通信接口603和通信总线604。其中,存储器601,用于存储可执行消息处理指令;处理器602,用于执行存储器中存储的可执行消息处理指令时,以实现以上述实施例提供的消息处理方法。
128.以上消息处理设备和存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术消息处理设备和存储介质实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
129.应理解,说明书通篇中提到的“一些实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本技术的至少一个实施例中。因此,在整个说明书各处出现的“在一些实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
130.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
131.在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部
分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
132.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
133.另外,在本技术各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
134.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。
135.或者,本技术上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一个产品执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。
136.以上所述,仅为本技术的实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。

技术特征:
1.一种消息处理方法,其特征在于,包括:获取消息消费者类对应的至少一个方法,获取所述至少一个方法各自对应的方法级监听器配置参数和配置参数优先级;基于所述至少一个方法各自对应的方法级监听器配置参数和配置参数优先级,创建所述至少一个方法各自对应的方法级消息监听器;通过所述至少一个方法各自对应的方法级消息监听器处理消息生产者发送的不同消息。2.根据权利要求1所述的方法,其特征在于,所述基于所述至少一个方法各自对应的方法级监听器配置参数和配置参数优先级,创建所述至少一个方法各自对应的方法级消息监听器,包括:基于所述配置参数优先级,获取所述消息消费者类对应的类级别监听器配置参数和全局配置参数;基于所述至少一个方法各自对应的方法级监听器配置参数、类级别监听器配置参数和全局配置参数,确定所述至少一个方法各自对应的目标监听器配置参数;基于所述至少一个方法各自对应的目标监听器配置参数,创建所述至少一个方法各自对应的方法级消息监听器。3.根据权利要求2所述的方法,其特征在于,所述配置参数优先级从高到低依次为方法级监听器配置参数、类级别监听器配置参数和全局配置参数;所述基于所述至少一个方法各自对应的方法级监听器配置参数、类级别监听器配置参数和全局配置参数,确定所述至少一个方法各自对应的目标监听器配置参数,包括:获取所述消息消费者类中第i个方法的每个方法级监听器配置参数对应的目标配置参数;确定所述第i个方法的每个方法级监听器配置参数与各自对应的目标配置参数均满足一致性条件,将所述第i个方法对应的方法监听器配置参数确定为目标监听器配置参数。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:确定所述第i个方法对应的方法级监听器配置参数中存在与对应的目标配置参数满足所述一致性条件的第一配置参数,且存在与对应的目标配置参数不满足所述一致性条件的其他配置参数,获取所述类级别监听器配置参数;确定所述类级别监听器配置参数中存在与第一其他目标配置参数满足所述一致性条件的第二配置参数,且所述第二配置参数的个数与所述第一配置参数的个数之和等于所述第i个方法对应的方法级监听器配置参数的个数,将所述第一配置参数和所述第二配置参数,确定为所述第i个方法对应的目标监听器配置参数;其中,所述第一其他目标配置参数为所述第i个方法的方法级监听器配置参数对应的目标配置参数中,除去与所述第一配置参数满足所述一致性条件的配置参数。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:确定所述类级别监听器配置参数中存在与所述第一其他目标配置参数满足所述一致性条件的第二配置参数,且所述第二配置参数的个数与所述第一配置参数的个数之和小于所述第i个方法对应的方法级监听器配置参数的个数,获取所述全局配置参数;确定所述全局配置参数中存在与第二其他目标配置参数满足所述一致性条件的第三
配置参数,且所述第一配置参数的个数、所述第二配置参数的个数和所述第三配置参数的个数之和等于所述第i个方法对应的方法级监听器配置参数的个数,将所述第一配置参数、所述第二配置参数和所述第三配置参数,确定为所述第i个方法对应的目标监听器配置参数;其中,所述第二其他目标配置参数为所述第i个方法的方法级监听器配置参数对应的目标配置参数中,除去与所述第一配置参数、所述第二配置参数满足所述一致性条件的配置参数。6.根据权利要求4所述的方法,其特征在于,所述方法还包括:确定所述类级别监听器配置参数与所述第一其他目标配置参数不满足所述一致性条件,获取所述全局配置参数;确定所述全局配置参数中存在与所述第一其他目标配置参数满足所述一致性条件的第三配置参数,且所述第三配置参数的个数与所述第一配置参数的个数之和等于所述第i个方法对应的方法级监听器配置参数的个数,将所述第一配置参数和所述第三配置参数,确定为所述第i个方法对应的目标监听器配置参数。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:确定所述全局配置参数与所述第一其他目标配置参数不满足所述一致性条件,对所述第i个方法的每个方法级监听器配置参数对应的目标配置参数进行更新,获得所述更新后的目标配置参数;确定所述第i个方法的每个方法级监听器配置参数与各自对应的更新后的目标配置参数均满足所述一致性条件,将所述第i个方法对应的方法级监听器配置参数确定为目标监听器配置参数。8.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取所述至少一个方法各自对应的方法级消息监听器接收到的第一消息;通过所述至少一个方法各自对应的方法级消息监听器对所述第一消息进行预处理,得到所述至少一个方法各自对应的预处理后的第一消息,其中,所述预处理包括对所述第一消息进行过滤处理、分类处理中的至少之一;对所述至少一个方法各自对应的预处理后的第一消息进行逻辑处理,获得消息处理结果,并发送所述消息处理结果。9.一种消息处理装置,其特征在于,包括:获取模块,用于获取消息消费者类对应的至少一个方法,获取所述至少一个方法各自对应的方法级监听器配置参数和配置参数优先级;创建模块,用于基于所述至少一个方法各自对应的方法级监听器配置参数和配置参数优先级,创建所述至少一个方法各自对应的方法级消息监听器;处理模块,用于通过所述至少一个方法各自对应的方法级消息监听器处理消息生产者发送的不同消息。10.一种消息处理设备,其特征在于,包括:存储器,用于存储可执行消息处理指令;处理器,用于执行所述存储器中存储的可执行消息处理指令时,实现权利要求1至8任一项所述的方法。

技术总结
本申请实施例公开了一种消息处理方法、装置和设备。该方法包括:获取消息消费者类对应的至少一个方法,以及各个方法对应的方法级监听器配置参数和配置参数优先级;基于各个方法对应的方法级消息监听器配置参数和配置参数优先级,创建各个方法对应的方法级消息监听器;通过各个对应的方法级消息监听器处理消息生产者发送的不同消息。如此,根据方法级消息监听器配置参数和配置参数优先级,建立各个业务处理方法对应的方法级的消息监听器,使得每个业务处理方法可独立的完成消息的处理,做到消息和业务处理方法处理准确匹配,逻辑唯一,从而降低消息处理的耦合性和复杂度,提高业务处理的效率。处理的效率。处理的效率。


技术研发人员:李路中 杨晓明 李可可 李坚 刘林
受保护的技术使用者:中国移动通信集团有限公司
技术研发日:2022.06.24
技术公布日:2023/9/22
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐