基于消息中间件实现消息消费优先级的调用方法及装置与流程
未命名
10-25
阅读:76
评论:0
1.本发明涉及计算机技术领域,具体涉及一种基于消息中间件实现消息消费优先级的调用方法及装置。
背景技术:
2.当今的分布式应用系统日益复杂,需要在不同服务之间进行高效的通信和协作。消息中间件作为一种重要的技术手段,通过提供可靠的消息传递机制,帮助构建了各种分布式系统,包括但不限于电商平台、金融交易系统、实时数据分析平台等。消息中间件的作用在于建立通信通道,实现系统之间的解耦,确保消息的可靠传递。
3.消息中间件不仅仅是一种消息传递机制,还支持各种消息驱动的处理模式,如发布订阅、点对点通信等。在发布订阅模式中,应用程序可以订阅感兴趣的主题,一旦主题上有新消息产生,消息中间件会将消息推送给所有订阅了该主题的应用程序。这种机制适用于事件驱动的应用场景,能够有效地实现不同模块之间的松耦合。
4.随着分布式应用系统的增加,消息中间件不仅要保证消息的高可靠性和安全性,还需要具备处理大量消息的能力。为了满足这些需求,各种消息中间件系统都提供了诸如消息存储、消息路由、消息传输等功能。以rocketmq为例,它支持事务消息、延时消息、顺序消息等特性,以满足不同业务场景的需求。
5.然而,在实际的业务场景中,除了基本的消息传递功能外,还存在着对消息处理优先级的需求。例如,在某些情况下,需要优先处理一些重要的消息,以保证业务的顺利进行。然而,目前的消息中间件并未直接提供消息处理优先级的功能,导致在处理多个优先级的消息时出现了一些问题。一种常见的做法是通过多套消息中间件来区分消息,但这增加了资源消耗和维护成本,不是一个通用的解决方案。
技术实现要素:
6.有鉴于此,本发明提出了一种基于消息中间件实现消息消费优先级的调用方法及装置,旨在解决当前消息中间件在消息处理优先级方面的不足,通过创新性的方法实现消息消费优先级调用装置,既能满足优先级需求,又能保持消息中间件的高性能、高可靠特性。
7.基于上述目的,第一方面,本发明提供了一种基于消息中间件实现消息消费优先级的调用方法,包括以下步骤:a)在消息中间件中创建多个主题,每个主题分别用于表示不同优先级的消息。
8.b)通过配置文件将每个主题与相应优先级进行关联,并设置权重参数用于控制不同优先级消息的消费比例。
9.c)在消费客户端分别连接各个主题的队列,并创建消费者代理。
10.d)消费者代理根据权重和优先级设定,循环从不同主题的队列中拉取消息进行消费。
11.作为本发明的进一步方案,权重参数根据业务需求设置,用于调整不同优先级消息的消费比例。
12.作为本发明的进一步方案,消息中间件为rocketmq,在rocketmq中创建多个主题,通过配置文件约定每个主题的优先级。
13.作为本发明的进一步方案,消息中间件创建的多个主题通过配置文件约定将优先级约定为高、中、低三个级别。
14.作为本发明的进一步方案,消费者代理根据设定的权重,按照优先级高低循环消费消息。
15.作为本发明的进一步方案,所述基于消息中间件实现消息消费优先级的调用方法中,消费者代理在处理高优先级消息时,根据权重参数处理指定数量的消息,保证高优先级消息的及时处理。
16.作为本发明的进一步方案,消费者代理在处理中优先级消息时,根据权重参数处理指定数量的消息,确保中优先级消息在高优先级消息处理完毕后得以消费。
17.作为本发明的进一步方案,消费者代理在处理低优先级消息时,根据权重参数处理指定数量的消息,保证低优先级消息在高、中优先级消息处理完毕后得以处理。
18.作为本发明的进一步方案,所述基于消息中间件实现消息消费优先级的调用方法中还包括:消费客户端应用分别连接每个主题的队列,从队列中读取消息,在约定的配置文件中配置权重。
19.作为本发明的进一步方案,消费客户端应用从队列中读取消息,包括以下步骤:步骤s10.按照优先级循环读取消息,使消费客户端首先根据优先级从三个主题(高、中、低)中循环选择一个进行读取消息,确保在循环中不同优先级的消息都有机会被处理;步骤s20.读取高优先级队列中的消息,当当前选择的主题是高优先级时,从该主题对应的队列(queue)中读取消息,根据权重参数w1设定要读取并处理的消息数量(例如,20个消息);步骤s30.处理高优先级消息,逐个处理读取到的消息,执行相应的业务逻辑或转发等操作;步骤s40.切换到中优先级队列,在高优先级消息处理完成后,切换到中优先级主题(例如,t-sm-submit-pri-normal)。如果高优先级队列中消息数本来不足20个,则直接进行切换;步骤s50.读取中优先级队列中的消息,从中优先级队列中读取消息,并根据权重参数w2设定要处理的消息数量(例如,10个消息);步骤s60.处理中优先级消息,逐个处理从中优先级队列中读取的消息;步骤s70.切换到低优先级队列,在中优先级消息处理完成后,切换到低优先级主题(例如,t-sm-submit-pri-low)。如果中优先级队列中消息数不足10个,则直接进行切换;步骤s80.读取低优先级队列中的消息,从低优先级队列中读取消息,并根据权重参数w3设定要处理的消息数量(例如,5个消息);步骤s90.处理低优先级消息,逐个处理从低优先级队列中读取的消息;
步骤s100.返回步骤s20继续循环处理,在低优先级消息处理完成后,回到步骤s20,继续循环处理高优先级消息,以此类推。
20.作为本发明的进一步方案,消费客户端应用从队列中读取消息时,按照消息优先级从预定的主题中循环选择一个主题;从所选主题的队列中读取消息,读取数量根据权重参数设定;逐个处理所读取的消息,执行相应的业务逻辑或转发操作。
21.作为本发明的进一步方案,所选主题的优先级在高、中、低三个级别中循环选择。
22.作为本发明的进一步方案,权重参数根据业务需求设定,用于调整读取消息的数量,确保不同优先级消息的适当处理比例。
23.第二方面,本发明提供了一种基于消息中间件实现消息消费优先级的调用装置,包括:主题创建模块,用于创建多个主题表示不同优先级的消息;配置文件关联模块,用于将每个主题与相应优先级进行关联,并设置权重参数用于控制不同优先级消息的消费比例;消费者连接模块,用于在消费客户端分别连接各个主题的队列,并创建消费者代理;消费代理模块,根据权重和优先级设定,循环从不同主题的队列中拉取消息进行消费。
24.作为本发明的进一步方案,权重参数根据业务需求设置,用于调整不同优先级消息的消费比例。
25.作为本发明的进一步方案,消息中间件为rocketmq,通过配置文件约定每个主题的优先级。
26.作为本发明的进一步方案,消息中间件创建的多个主题通过配置文件约定将优先级约定为高、中、低三个级别。
27.作为本发明的进一步方案,消费者代理根据设定的权重,按照优先级高低循环消费消息。
28.作为本发明的进一步方案,所述消费者代理在处理高优先级消息时,根据权重参数处理指定数量的消息,确保高优先级消息的及时处理。
29.作为本发明的进一步方案,所述消费者代理在处理中优先级消息时,根据权重参数处理指定数量的消息,确保中优先级消息在高优先级消息处理完毕后得以消费。
30.作为本发明的进一步方案,所述消费者代理在处理低优先级消息时,根据权重参数处理指定数量的消息,保证低优先级消息在高、中优先级消息处理完毕后得以处理。
31.作为本发明的进一步方案,所述基于消息中间件实现消息消费优先级的调用装置还包括:消费客户端连接模块,分别连接每个主题的队列,从队列中读取消息,并在约定的配置文件中配置权重。
32.本发明的又一方面,还提供了一种计算机设备,包括存储器和处理器,该存储器中存储有计算机程序,该计算机程序被处理器执行时执行上述任一项根据本发明的基于消息中间件实现消息消费优先级的调用方法。
33.本发明的再一方面,还提供了一种计算机可读存储介质,存储有计算机程序指令,
该计算机程序指令被执行时实现上述任一项根据本发明的基于消息中间件实现消息消费优先级的调用方法。
34.与现有技术相比较而言,本发明提出的一种基于消息中间件实现消息消费优先级的调用方法及装置,具有以下有益效果:1.优化消息处理顺序:本发明的基于消息中间件实现消息消费优先级的调用方法及装置,可以根据消息的优先级,实现不同级别消息的有序处理,确保高优先级消息能够及时被处理,提高系统的实时性和响应性。
35.2.灵活的权重控制:通过设置权重参数,可以灵活地调整不同优先级消息的消费比例,从而根据实际业务需求合理分配系统资源,达到最优的消息处理效果。
36.3.业务逻辑分离:消费者代理根据优先级循环处理不同主题队列中的消息,使得业务逻辑能够更好地与消息优先级分离,增加了系统的可维护性和可扩展性。
37.4.确保高优先级消息处理:通过根据权重参数处理指定数量的消息,保证高优先级消息的及时处理,避免因低优先级消息阻塞而导致重要消息延迟处理。
38.5.资源分配平衡:通过设定权重参数,可以实现不同优先级消息之间的资源合理分配,确保高优先级消息不会因低优先级消息而被阻塞,避免系统资源过度倾斜于某一优先级,提高系统整体的性能稳定性。
39.6.提高消息消费效率:通过循环从不同主题队列中拉取消息,确保不同优先级消息得到处理,提高了整体消息消费效率。消费者代理的循环处理机制,确保了不同优先级的消息都有机会被及时处理,从而提高了消息的整体消费效率。
40.7.适应多场景:通过调整配置文件中的权重参数和优先级关联,本发明可以快速适应业务需求的变化,从而提升系统的灵活性和响应能力;适用于多个场景,可以根据实际需求配置不同的优先级和权重,满足不同业务的需求。
41.本技术的这些方面或其他方面在以下实施例的描述中会更加简明易懂。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
42.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
43.在图中:图1为本发明实施例的基于消息中间件实现消息消费优先级的调用方法和装置的逻辑框图;图2为本发明实施例的基于消息中间件实现消息消费优先级的调用方法的流程图。
44.图3为本发明实施例的基于消息中间件实现消息消费优先级的调用装置的结构框图。
具体实施方式
45.下面,结合附图以及具体实施方式,对本技术做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
46.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
47.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称的非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备固有的其他步骤或单元。
48.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
49.附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
50.下面结合附图,对本技术的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
51.消息中间件是指一种在需要进行网络通信的系统进行通道的建立,数据或文件发送的中间件。现在越来越多的分布式应用系统采用消息中间件方式来构建,基于消息的机制更适用于由事件驱动的应用,当一个事件发生时,消息中间件通知服务方应该进行如何操作。消息中间件的任务除了以其高可靠性、高安全性传递消息之外;还支持消息驱动处理模式的触发机制、向多个应用广播数据、发布订阅。其中发布订阅是一种消息传递常用的形式,在这种形式中,应用对其感兴趣的主题进行登记,一旦主题被一个应用“订阅”,那么这个应用就会接收到与该主题相关的消息。
52.随着消息中间件相关技术的广泛运用,除了满足削峰填谷,系统解耦等基本的需求外。各类中间件也设计了很多个性特征,其中以rocketmq为代表,它支持事务消息、延时消息、顺序消息。但由于开销太大,无法支持消息消费优先级;但在实际的业务场景中,有存在消息消费优先级的需求。比如某一类消息需要在消息积压时优先处理消费。
53.由于目前的消息中间件基本没有直接实现消息优先级功能。主要原因是在消息上标定优先级后,消息中间件就会丧失高性能、高可靠的特征,无法完成削峰填谷,系统解耦的设计初衷。可能采用的方案如分开部署多套消息中间件来区分消息,但这样既增加了资源消耗,也增加了维护成本,不是可推广的技术方案。
54.在无现有技术方案的前提下,有需要实现消息处理的优先级;就需要引入额外的机制。做 到既能实现消息的优先级,又不损失消息中间件的高性能、高可靠特征。本发明的基于消息中间件实现的消息消费优先级调用方法及装置,基于rocketmq的特性上增加了独
特机制。既保留了消息中间件高性能特征,又能满足消息优先级这个特殊的业务场景。
55.参见图1和图2所示,本发明的实施例提供了一种基于消息中间件实现消息消费优先级的调用方法,该方法包括以下步骤:步骤s10、在消息中间件中创建多个主题,每个主题分别用于表示不同优先级的消息。
56.步骤s20、通过配置文件将每个主题与相应优先级进行关联,并设置权重参数用于控制不同优先级消息的消费比例。
57.步骤s30、在消费客户端分别连接各个主题的队列,并创建消费者代理。
58.步骤s40、消费者代理根据权重和优先级设定,循环从不同主题的队列中拉取消息进行消费。
59.在本实施例中,权重参数根据业务需求设置,用于调整不同优先级消息的消费比例。
60.在本实施例中,消息中间件为rocketmq,在rocketmq中创建多个主题,通过配置文件约定每个主题的优先级。
61.在本实施例中,消息中间件创建的多个主题通过配置文件约定将优先级约定为高、中、低三个级别。
62.在本实施例中,消费者代理根据设定的权重,按照优先级高低循环消费消息。
63.在本实施例中,所述基于消息中间件实现消息消费优先级的调用方法中,消费者代理在处理高优先级消息时,根据权重参数处理指定数量的消息,保证高优先级消息的及时处理。
64.在本实施例中,消费者代理在处理中优先级消息时,根据权重参数处理指定数量的消息,确保中优先级消息在高优先级消息处理完毕后得以消费。
65.在本实施例中,消费者代理在处理低优先级消息时,根据权重参数处理指定数量的消息,保证低优先级消息在高、中优先级消息处理完毕后得以处理。
66.示例性的,发送消息时,在rocketmq中根据创建三个topic,分别为topic1、topic2、topic3。通过配置文件分别约定表示高、中、低三个优先级的消息主题;比如设置参数t-sm-submit-pri-high的值为topic1,t-sm-submit-pri-normal的值为topic2,t-sm-submit-pri-low的值为topic3。本装置作用于消息消费端,消息生产端无需特别改动,只需要根据业务规则把消息写入对应的topic即可,消息写入时一般无需考虑优先级,都是跟随消息的业务发生立即写入,高效消息写入也是rocketmq的基本特性。消息写入topic后消息中间件不支持内部队列调整。
67.消费客户端应用分别连接三个topic的queue,从queue中读取消息在本装置约定的配置文件中配置权重,目前配置文件设定有w1、w2、w3三个参数用于配置权重比例数值,比如w1、w2、w3权重分别配置为20、10、5。数值越大代表权重越高。
68.在本实施例中,所述基于消息中间件实现消息消费优先级的调用方法中还包括:消费客户端应用分别连接每个主题的队列,从队列中读取消息,在约定的配置文件中配置权重。
69.其中,消费客户端应用从队列中读取消息,包括以下步骤:步骤s10.按照优先级循环读取消息,使消费客户端首先根据优先级从三个主题
(高、中、低)中循环选择一个进行读取消息,确保在循环中不同优先级的消息都有机会被处理;步骤s20.读取高优先级队列中的消息,当当前选择的主题是高优先级时,从该主题对应的队列(queue)中读取消息,根据权重参数w1设定要读取并处理的消息数量(例如,20个消息);步骤s30.处理高优先级消息,逐个处理读取到的消息,执行相应的业务逻辑或转发等操作;步骤s40.切换到中优先级队列,在高优先级消息处理完成后,切换到中优先级主题(例如,t-sm-submit-pri-normal)。如果高优先级队列中消息数本来不足20个,则直接进行切换;步骤s50.读取中优先级队列中的消息,从中优先级队列中读取消息,并根据权重参数w2设定要处理的消息数量(例如,10个消息);步骤s60.处理中优先级消息,逐个处理从中优先级队列中读取的消息;步骤s70.切换到低优先级队列,在中优先级消息处理完成后,切换到低优先级主题(例如,t-sm-submit-pri-low)。如果中优先级队列中消息数不足10个,则直接进行切换;步骤s80.读取低优先级队列中的消息,从低优先级队列中读取消息,并根据权重参数w3设定要处理的消息数量(例如,5个消息);步骤s90.处理低优先级消息,逐个处理从低优先级队列中读取的消息;步骤s100.返回步骤s20继续循环处理,在低优先级消息处理完成后,回到步骤s20,继续循环处理高优先级消息,以此类推。
70.本发明的基于消息中间件实现消息消费优先级的调用方法中消费客户端代理从queue中读取消息的逻辑如下:1、按照优先级从三个topic中循环读取消息;拉取处理过程依照权重设置进行。同样优先级内的消息保持消息中间件原有先进先出的基本特征。
71.2、从高优先级队列t-sm-submit-pri-high中读取并转发处理w1个消息,比如20个消息,直至高优先级队列的消息处理完成后再处理中优先级消息;如果高优先级队列中消息数本来就不足20个,则处理完所有消息后继续处理中优先级消息;3、从中优先级队列t-sm-submit-pri-normal中读取并转发处理w2个消息,比如10个消息,直至中优先级队列处理完成后再处理低优先级消息;如果中优先级队列中消息数不足10个,则处理完所有消息后继续处理低优先级消息;4、从低优先级队列t-sm-submit-pri-low中读取并转发处理w3个消息,比如5个消息,处理完成后再转到步骤2,继续处理高优先级消息;如果低优先级队列中消息数不足5个,则处理完所有消息后继续处理高优先级消息。
72.本发明的基于消息中间件实现消息消费优先级的调用方法中每个消费客户端按照上面的逻辑循环处理三个topic中的消息,实现消息按优先级发送的目的。
73.在本实施例中,消费客户端应用从队列中读取消息时,按照消息优先级从预定的主题中循环选择一个主题;从所选主题的队列中读取消息,读取数量根据权重参数设定;逐个处理所读取的消息,执行相应的业务逻辑或转发操作。
74.在本实施例中,所选主题的优先级在高、中、低三个级别中循环选择。
75.在本实施例中,权重参数根据业务需求设定,用于调整读取消息的数量,确保不同优先级消息的适当处理比例。
76.综上所述,本发明的基于消息中间件实现消息消费优先级的调用方法,有效地管理和处理不同优先级的消息,以适应不同业务需求,具有以下优点:1.创建多个主题与关联优先级:首先,在消息中间件中创建多个主题,每个主题代表不同优先级的消息。通过配置文件将每个主题与相应的优先级进行关联,为消息建立优先级分类。
77.2.设置权重参数:为了在消费过程中合理地分配不同优先级消息的处理比例,本发明引入了权重参数。这些参数根据业务需求设定,通过调整权重,可以动态控制不同优先级消息的消费比例。
78.3.消费者代理循环处理:通过创建消费者代理并连接不同主题的队列,系统能够根据设定的权重和优先级循环地从各主题的队列中拉取消息进行消费。这种循环处理方式确保了高优先级消息的及时处理,同时也保证了其他优先级消息的处理。
79.4.动态切换与适应性:为了保证消息的及时处理,本发明的方法能够根据实际情况动态切换主题和队列。即使某些队列消息数量不足,系统也能够迅速切换到其他队列,确保消息的合理消费。
80.5.业务逻辑分离:方法中将优先级处理逻辑与实际业务逻辑分离,保持代码的清晰性和可维护性。这使得方法更具灵活性,可以根据不同的业务场景进行调整。
81.通过上述步骤,本发明的方法实现了对消息消费优先级的管理与调度,为构建高效、灵活的消息处理系统提供了有效的解决方案。它在消息中间件的基础上,结合优先级分类、权重调控和动态切换等机制,能够适应多样化的业务需求,提升系统的响应性、适应性和稳定性。同时,该方法的普适性使其适用于各种消息中间件平台,为构建可靠的消息处理系统提供了有益的工具和思路。
82.需要注意的是,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
83.应该理解的是,上述虽然是按照某一顺序描述的,但是这些步骤并不是必然按照上述顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,本实施例的一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
84.本发明实施例的第二个方面,参见图1和图3所示,本发明还提供了一种基于消息中间件实现消息消费优先级的调用装置,包括:主题创建模块,用于创建多个主题表示不同优先级的消息;配置文件关联模块,用于将每个主题与相应优先级进行关联,并设置权重参数用于控制不同优先级消息的消费比例;消费者连接模块,用于在消费客户端分别连接各个主题的队列,并创建消费者代理;
消费代理模块,根据权重和优先级设定,循环从不同主题的队列中拉取消息进行消费。
85.在本实施例中,权重参数根据业务需求设置,用于调整不同优先级消息的消费比例。
86.在本实施例中,消息中间件为rocketmq,通过配置文件约定每个主题的优先级。
87.在本实施例中,消息中间件创建的多个主题通过配置文件约定将优先级约定为高、中、低三个级别。
88.在本实施例中,消费者代理根据设定的权重,按照优先级高低循环消费消息。
89.在本实施例中,所述消费者代理在处理高优先级消息时,根据权重参数处理指定数量的消息,确保高优先级消息的及时处理。
90.在本实施例中,所述消费者代理在处理中优先级消息时,根据权重参数处理指定数量的消息,确保中优先级消息在高优先级消息处理完毕后得以消费。
91.在本实施例中,所述消费者代理在处理低优先级消息时,根据权重参数处理指定数量的消息,保证低优先级消息在高、中优先级消息处理完毕后得以处理。
92.在本实施例中,所述基于消息中间件实现消息消费优先级的调用装置还包括:消费客户端连接模块,分别连接每个主题的队列,从队列中读取消息,并在约定的配置文件中配置权重。
93.综上所述,本发明的一种基于消息中间件实现消息消费优先级的调用装置中,主题创建模块:用于在消息中间件中创建多个主题,每个主题分别表示不同优先级的消息。主题创建模块创建了一个消息分类的框架,方便后续消息的优先级管理。
94.配置文件关联模块:通过配置文件,将每个主题与相应的优先级进行关联,并设置权重参数,用于控制不同优先级消息的消费比例。配置文件关联模块使得系统可以根据配置灵活地进行优先级管理和调整。
95.消费者连接模块:负责在消费客户端中连接各个主题的队列,并创建消费者代理。消费者连接模块建立了消息消费的基础设施,使得消息能够被有效地接收和处理。
96.消费代理模块:根据权重和优先级设定,该模块循环地从不同主题的队列中拉取消息进行消费。消费代理模块是整个装置的核心,实现了不同优先级消息的有序处理。
97.在基于消息中间件实现消息消费优先级的调用装置中,根据业务需求设定的权重参数可以调整不同优先级消息的消费比例,提供了更灵活的控制能力。针对消息中间件为rocketmq的情况,通过配置文件约定每个主题的优先级,从而实现消息的优先级分类。
98.同时,基于消息中间件实现消息消费优先级的调用装置中的消费者代理模块根据设定的权重,按照优先级的高低循环地消费消息。这个特性确保了高优先级消息的及时处理,同时也兼顾了中、低优先级消息的处理。
99.通过以上模块的配合,本装置实现了在消息中间件上基于优先级的消息处理,确保了不同优先级消息的合理消费和处理。
100.本发明实施例的第三个方面,还提供了一种计算机设备,包括存储器和处理器,该存储器中存储有计算机程序,该计算机程序被该处理器执行时实现上述任意一项实施例的方法。
101.在该计算机设备中包括一个处理器以及一个存储器,并还可以包括:输入装置和
输出装置。处理器、存储器、输入装置和输出装置可以通过总线或者其他方式连接,输入装置可接收输入的数字或字符信息,以及产生与基于消息中间件实现消息消费优先级的调用的迁移有关的信号输入。输出装置可包括显示屏等显示设备。
102.存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本技术实施例中的基于消息中间件实现消息消费优先级的调用方法对应的程序指令/模块。存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作装置、至少一个功能所需要的应用程序;存储数据区可存储基于消息中间件实现消息消费优先级的调用方法的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
103.处理器在一些实施例中可以是中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器通常用于控制计算机设备的总体操作。本实施例中,处理器用于运行存储器中存储的程序代码或者处理数据。本实施例计算机设备的多个计算机设备的处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的基于消息中间件实现消息消费优先级的调用方法的步骤。
104.应当理解,在相互不冲突的情况下,以上针对根据本发明的基于消息中间件实现消息消费优先级的调用方法阐述的所有实施方式、特征和优势同样地适用于根据本发明的基于消息中间件实现消息消费优先级的调用和存储介质。
105.本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个装置的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
106.最后需要说明的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦写可编程rom(eeprom)或快闪存储器。易失性存储器可以包括随机存取存储器(ram),该ram可以充当外部高速缓存存储器。作为例子而非限制性的,ram 可以以多种形式获得,比如同步ram(dram)、动态ram(dram)、同步dram(sdram)、双数据速率sdram(ddr sdram)、增强sdram(esdram)、同步链路dram(sldram)、以及直接rambus ram(drram)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
107.结合这里的公开所描述的各种示例性逻辑块、模块和电路可以利用被设计成用于执行这里功能的下列部件来实现或执行:通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可
以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器结合dsp和/或任何其它这种配置。
108.以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
109.应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
110.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
技术特征:
1.一种基于消息中间件实现消息消费优先级的调用方法,其特征在于,包括以下步骤:在消息中间件中创建多个主题,每个主题分别用于表示不同优先级的消息;通过配置文件将每个主题与相应优先级进行关联,并设置权重参数用于控制不同优先级消息的消费比例;在消费客户端分别连接各个主题的队列,并创建消费者代理;消费者代理根据权重和优先级设定,循环从不同主题的队列中拉取消息进行消费。2.根据权利要求1所述的基于消息中间件实现消息消费优先级的调用方法,其特征在于,权重参数根据业务需求设置,用于调整不同优先级消息的消费比例;消息中间件为rocketmq,在rocketmq中创建多个主题,通过配置文件约定每个主题的优先级。3.根据权利要求2所述的基于消息中间件实现消息消费优先级的调用方法,其特征在于,消息中间件创建的多个主题通过配置文件约定将优先级约定为高、中、低三个级别;消费者代理根据设定的权重,按照优先级高低循环消费消息。4.根据权利要求3所述的基于消息中间件实现消息消费优先级的调用方法,其特征在于,所述基于消息中间件实现消息消费优先级的调用方法中,消费者代理在处理高优先级消息时,根据权重参数处理指定数量的消息,其中,中优先级消息在高优先级消息处理完毕后得以消费。5.根据权利要求4所述的基于消息中间件实现消息消费优先级的调用方法,其特征在于所述基于消息中间件实现消息消费优先级的调用方法中,消费者代理在处理低优先级消息时,根据权重参数处理指定数量的消息;其中,低优先级消息在高、中优先级消息处理完毕后得以处理。6.根据权利要求1所述的基于消息中间件实现消息消费优先级的调用方法,其特征在于,所述基于消息中间件实现消息消费优先级的调用方法中还包括:消费客户端应用分别连接每个主题的队列,从队列中读取消息,在约定的配置文件中配置权重。7.根据权利要求6所述的基于消息中间件实现消息消费优先级的调用方法,其特征在于,消费客户端应用从队列中读取消息时,按照消息优先级从预定的主题中循环选择一个主题;从所选主题的队列中读取消息,读取数量根据权重参数设定;逐个处理所读取的消息,执行相应的业务逻辑或转发操作。8.根据权利要求7所述的基于消息中间件实现消息消费优先级的调用方法,其特征在于,消费客户端应用从队列中读取消息,包括以下步骤:步骤s10.按照优先级循环读取消息,使消费客户端根据优先级从多个主题中循环选择一个主题进行读取消息;步骤s20.读取高优先级队列中的消息,在当前选择的主题为高优先级时,从高优先级的主题对应的队列中读取消息,根据权重参数设定待读取并处理的高优先级队列中的消息数量;步骤s30.处理高优先级消息,逐个处理读取到的消息,执行相应的业务逻辑、转发操作;步骤s40.切换到中优先级队列,在高优先级消息处理完成后,切换到中优先级主题;其中,在高优先级队列中消息数本来不足设定的消息数量时,直接进行切换;
步骤s50.读取中优先级队列中的消息,从中优先级队列中读取消息,并根据权重参数设定要处理的中优先级队列中的消息数量;步骤s60.处理中优先级消息,逐个处理从中优先级队列中读取的消息;步骤s70.切换到低优先级队列,在中优先级消息处理完成后,切换到低优先级主题;其中,在中优先级队列中消息数不足预设数量时,直接进行切换;步骤s80.读取低优先级队列中的消息,从低优先级队列中读取消息,并根据权重参数设定要处理的低优先级队列中的消息数量;步骤s90.处理低优先级消息,逐个处理从低优先级队列中读取的消息;步骤s100.返回步骤s20继续循环处理,在低优先级消息处理完成后,回到步骤s20,继续循环处理高优先级消息。9.根据权利要求8所述的基于消息中间件实现消息消费优先级的调用方法,其特征在于,所选主题的优先级在高、中、低三个级别中循环选择。10.一种基于消息中间件实现消息消费优先级的调用装置,其特征在于,用于执行权利要求1-9任一项所述的基于消息中间件实现消息消费优先级的调用方法,所述基于消息中间件实现消息消费优先级的调用装置包括:主题创建模块,用于创建多个主题表示不同优先级的消息;配置文件关联模块,用于将每个主题与相应优先级进行关联,并设置权重参数用于控制不同优先级消息的消费比例;消费者连接模块,用于在消费客户端分别连接各个主题的队列,并创建消费者代理;消费代理模块,根据权重和优先级设定,循环从不同主题的队列中拉取消息进行消费;消费客户端连接模块,分别连接每个主题的队列,从队列中读取消息,并在约定的配置文件中配置权重。
技术总结
本发明提供了基于消息中间件实现消息消费优先级的调用方法及装置,旨在解决现有消息中间件在消息处理优先级方面的不足,实现在消息处理中引入优先级概念的同时,保持消息中间件的高性能和高可靠特性。本发明在现有消息中间件的基础上,引入了多主题和权重机制,以实现消息的优先级调用。通过创建多个主题,为每个主题设置不同的优先级,然后使用权重机制控制不同优先级消息的消费比例。在消费端,装置根据优先级和权重,从不同主题的队列中读取消息,从而实现了消息的优先级调用。本发明实现了在不损失消息中间件性能和可靠性的前提下,将消息消费与优先级结合,有效地满足特定业务场景中的消息处理需求。场景中的消息处理需求。场景中的消息处理需求。
技术研发人员:孙念东
受保护的技术使用者:卓望数码技术(深圳)有限公司
技术研发日:2023.09.12
技术公布日:2023/10/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/