CN107197015A - 一种基于消息队列系统的消息处理方法和装置 - Google Patents

一种基于消息队列系统的消息处理方法和装置 Download PDF

Info

Publication number
CN107197015A
CN107197015A CN201710366692.5A CN201710366692A CN107197015A CN 107197015 A CN107197015 A CN 107197015A CN 201710366692 A CN201710366692 A CN 201710366692A CN 107197015 A CN107197015 A CN 107197015A
Authority
CN
China
Prior art keywords
message
queue
queued packets
client
consumer
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
Application number
CN201710366692.5A
Other languages
English (en)
Other versions
CN107197015B (zh
Inventor
郑光杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201710366692.5A priority Critical patent/CN107197015B/zh
Publication of CN107197015A publication Critical patent/CN107197015A/zh
Application granted granted Critical
Publication of CN107197015B publication Critical patent/CN107197015B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/566Grouping or aggregating service requests, e.g. for unified processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/122Avoiding congestion; Recovering from congestion by diverting traffic away from congested entities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开提供一种基于消息队列系统的消息处理方法和装置,其中方法包括:一个队列分组接收作为生产者的消息队列客户端发送的消息;队列分组判断当前的队列长度是否达到阈值,若达到阈值,则向生产者的消息队列客户端返回队列满指令和推荐切换的目标队列分组;作为生产者的消息队列客户端根据队列满指令,将生产的消息转发至目标队列分组;队列分组在接收到作为消费者的消息队列客户端拉取消息的请求时,同样进行队列长度是否达到阈值的判断,若达到阈值,则向消费者的消息队列客户端返回队列满指令和目标队列分组;作为消费者的消息队列客户端将由队列分组拉取的消息转发至目标队列分组。本公开加快了消息整体的处理速度,降低消息处理的延迟时间。

Description

一种基于消息队列系统的消息处理方法和装置
技术领域
本公开涉及计算机技术领域,特别涉及一种基于消息队列系统的消息处理方法和装置。
背景技术
消息队列技术是分布式应用间交换信息的一种技术,可以用于实现系统解耦、提高系统的响应时间等作用。在消息队列系统中,一个Topic(消息主题)可以包括多个partition(队列分组),每个partition是一个有序的队列。一个消息的投递过程可以包括:Producer(消息生产者)连接至预先分配的Partition,并在产生消息时主动投递消息至该预先分配的Partition中,Consumer(消息消费者)从预先分配的Partition中主动拉取消息进行消费。
但是,在实际的生产过程中,由于机器之间的负载存在差异性,对消息的消化速度是不一致的。比如,Consumer A和Consumer B分别从Partition1和Partition2中获取消息消费,即使两个Partition的消息数量相同,但是由于Consumer B当前的机器负载高,Consumer B完全处理消息队列所需要的时间比Consumer A长,这就导致Consumer B的消息处理延迟。而且Producer和Partition以及Consumer和Partition的对应关系是预先分配好的,在系统运行时是无法更改的,如果Producer生产的消息持续高速的分别向队列Partition1和Partition2投递,就会导致Consumer B对应的Partition2的消息积压越来越多,消息从产生到真正消费所需要等待的时间会越来越长。
发明内容
有鉴于此,本公开提供一种基于消息队列系统的消息处理方法和装置,以加快消息整体的处理速度,降低消息延迟时间。
具体地,本公开是通过如下技术方案实现的:
第一方面,提供一种基于消息队列系统的消息处理方法,所述消息队列系统包括消息队列服务端和消息队列客户端,所述消息队列服务端包括属于同一消息主题的多个队列分组;所述方法包括:
一个队列分组接收作为生产者的消息队列客户端发送的消息;
所述队列分组判断当前的队列长度是否达到阈值,若达到阈值,则向所述作为生产者的消息队列客户端返回队列满指令,并且返回推荐切换的目标队列分组;
所述作为生产者的消息队列客户端根据所述队列满指令,将生产的消息转发至所述目标队列分组;
所述队列分组接收作为消费者的消息队列客户端拉取消息的请求,所述作为消费者的消息队列客户端用于订阅所述消息主题并处理所述消息主题下的队列分组中发布的消息;
所述队列分组判断当前的队列长度是否达到阈值,若达到阈值,则向所述消费者的消息队列客户端返回队列满指令,并且返回推荐切换的目标队列分组;
所述作为消费者的消息队列客户端根据所述队列满指令,将由所述队列分组拉取的消息转发至所述目标队列分组,以由所述目标队列分组对应的消费者的消息队列客户端进行处理。
第二方面,提供一种消息队列系统,所述系统包括:消息队列服务端和消息队列客户端,所述消息队列服务端包括属于同一消息主题的多个队列分组,所述消息队列客户端包括作为生产者的消息队列客户端和作为消费者的消息队列客户端;
所述消息队列服务端的其中一个队列分组,用于在接收到所述作为生产者的消息队列客户端发送的消息时,或者在接收到作为消费者的消息队列客户端拉取消息的请求时,判断当前的队列长度是否达到阈值,若达到阈值,则向所述消息队列客户端返回队列满指令,并且返回推荐切换的目标队列分组;
所述作为生产者的消息队列客户端,用于根据所述队列满指令,将向所述队列分组发送的消息转发至所述目标队列分组;
所述作为消费者的消息队列客户端,用于根据所述队列满指令,将由所述队列分组拉取的消息转发至所述目标队列分组。
第三方面,提供一种计算机可读存储介质,所述介质上存储有计算机指令,该指令被处理器执行时,用于实现消息队列系统,所述消息队列系统包括消息队列服务端和消息队列客户端,所述消息队列服务端包括属于同一消息主题的多个队列分组;所述消息队列系统执行以下步骤:
一个队列分组接收作为生产者的消息队列客户端发送的消息;
所述队列分组判断当前的队列长度是否达到阈值,若达到阈值,则向所述作为生产者的消息队列客户端返回队列满指令,并且返回推荐切换的目标队列分组;
所述作为生产者的消息队列客户端根据所述队列满指令,将生产的消息转发至所述目标队列分组;
所述队列分组接收作为消费者的消息队列客户端拉取消息的请求,所述作为消费者的消息队列客户端用于订阅所述消息主题并处理所述消息主题下的队列分组中发布的消息;
所述队列分组判断当前的队列长度是否达到阈值,若达到阈值,则向所述消费者的消息队列客户端返回队列满指令,并且返回推荐切换的目标队列分组;
所述作为消费者的消息队列客户端根据所述队列满指令,将由所述队列分组拉取的消息转发至所述目标队列分组,以由所述目标队列分组对应的消费者的消息队列客户端进行处理。
第四方面,提供一种消息处理设备,所述设备包括存储器、处理器,以及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现消息队列系统,所述消息队列系统包括消息队列服务端和消息队列客户端,所述消息队列服务端包括属于同一消息主题的多个队列分组;所述消息队列系统执行以下步骤:
一个队列分组接收作为生产者的消息队列客户端发送的消息;
所述队列分组判断当前的队列长度是否达到阈值,若达到阈值,则向作为生产者的所述消息队列客户端返回队列满指令,并且返回推荐切换的目标队列分组;
所述作为生产者的消息队列客户端根据所述队列满指令,将生产的消息转发至所述目标队列分组;
所述队列分组接收作为消费者的消息队列客户端拉取消息的请求,所述作为消费者的消息队列客户端用于订阅所述消息主题并处理所述消息主题下的队列分组中发布的消息;
所述队列分组判断当前的队列长度是否达到阈值,若达到阈值,则向所述消费者的消息队列客户端返回队列满指令,并且返回推荐切换的目标队列分组;
所述作为消费者的消息队列客户端根据所述队列满指令,将由所述队列分组拉取的消息转发至所述目标队列分组,以由所述目标队列分组对应的消费者的消息队列客户端进行处理。
本公开的基于消息队列系统的消息处理方法和装置,通过由消息队列服务端的Partition来判断是否出现消息积压,并在积压产生时向客户端返回队列满指令,使得客户端可以根据Partition推荐的队列来转移消息,从而加快消息整体的处理速度,降低消息处理的延迟时间。
附图说明
图1是本公开一个例子中提供的消息队列系统的系统架构图;
图2是本公开一个例子中提供的一个消息队列系统的应用架构;
图3是本公开一个例子中提供的消息重发和消息转发的原理示意图;
图4是本公开一个例子中提供的消息重发的流程图;
图5是本公开一个例子中提供的目标队列分组的获取示意图;
图6是本公开一个例子中提供的消息转发的流程图;
图7是本公开一个例子中提供的消息处理方法的流程示意图。
具体实施方式
图1示例了一个消息队列系统的系统架构图,如图1所示,一个消息队列系统可以包括三个部分:Producer11、消息队列(Message Queue)12、Consumer13。其中,Producer11作为消息的生产者(传输的数据即为消息,例如,各种类型的数据文件,或者,一个应用向其他应用发送的处理请求等),可以将生产的一个个消息14发送至消息队列12,Consumer13可以由消息队列12拉取消息进行消费(例如,根据拉取的消息发送邮件)。本公开的例子中,上述的消息队列12可以称为消息队列服务端,Producer11和Consumer13可以称为消息队列客户端;并且,Producer11是作为消息生产者的消息队列客户端,Consumer13是作为消息消费者的消息队列客户端。
在消息队列系统的实际应用中,可以有多个Producer11,也可以有多个Consumer13,而且消息队列12也可以包括多个消息主题Topic的队列,一个Topic还可以包括多个队列分组Partition,Consumer可以订阅Topic并处理该Topic下的各个队列分组中发布的消息。如图2所示,示例了一个消息队列系统的应用架构。如图2所示,Partition1至Partition3可以属于同一个Topic,ProducerA可以向Partition1和Partition2发送消息,对应的消息分别由ConsumerA和ConsumerB进行消费,Partition3用于ProducerB和ConsumerC之间的消息传输。
由于各个Consumer的机器负载之间存在差异性,对Partition中消息的消费速度是不一致的,有可能造成某个Partition中的消息积压,从而影响消息的及时消费处理。本公开例子提供的消息处理方法,可以用于解决上述问题,以尽量避免队列中的消息积压造成数据处理延迟。
如下以图2所示的应用架构为例,描述本公开例子的消息处理方法:
本例子的消息处理方法,主要思路是将处理速度较慢的消息队列Partition的消息转移到处理速度较快的Partition中,以减少处理速度较慢的Partition中的消息积压。例如,假设图2中由于ConsumerB的机器负载较高,导致Partition2出现了消息积压,而Partition1和Partition3尚未出现积压,为了避免加剧Partition2的积压状况,可以由如下两个方面改善:
一方面,可以在ProducerA向Partition2发送消息时,使得ProducerA调整至将该消息转移到其他未积压的Partition(例如,Partition1或者Partition3,属于同一Topic的Partition即可),从Partition2的源头上减少消息的进入。
另一方面,还可以是当ConsumerB由Partition2拉取消息时,由于ConsumerB的机器负载较高,可以使得ConsumerB不再处理该消息,而是在消息拉取后将该消息转移至Partition1(ConsumerB转换为Partition1的消息生产者的角色),由对应Partition1的ConsumerA消费,从Partition2的出口加快消息的离开。
上述两方面的转移,在消息队列系统中至少实施其中一个,都可以减轻Partition2的消息积压。如下结合图3至图5,说明如何实现上述的消息转移。
图3中在Producer A和Partition2之间,实施了由Partition2转移至Partition1的消息发送转移,相当于消息的重发,图4对应描述这一过程:
在步骤401中,作为生产者的消息队列客户端向队列分组Partition发送生产的消息。
例如,图3中的Producer A根据预先配置好的对应关系,向对应的Partition2发送生产的消息,即图3中示例的消息重发过程中的“1”标识的虚线箭头线,表示Producer A向Partition2发送消息,请求Partition2接受并存储该消息。
在步骤402中,当前的Partition判断当前的队列长度是否达到阈值。
例如,当前的Partition即Partition2,该Partition2可以判断队列长度是否大于或等于预定的长度阈值,比如,长度阈值可以是存储n个消息,n为自然数。该队列长度的阈值可以是根据Partition所属服务器的硬件资源和承载能力,结合所接收消息的量级、消息的大小等因素综合确定;通常,属于同一个Topic的各个Partition的队列长度阈值可以设定为相同。
本步骤的判断结果若是未达到阈值,说明该Partition尚未达到其最大承载能力,还能继续接收消息,如图4所示,可以继续执行步骤403和步骤404;否则,若达到阈值,则说明该Partition已经出现了消息积压,继续执行步骤405。
在步骤403中,当前的Partition接收并存储消息。
例如,Partition可以将Producer发送的消息放入自己的消息队列中。
在步骤404中,当前的Partition向生产者的消息队列客户端返回处理完成指令,使得Producer得知其发送的消息已经被放入消息队列中。
上述的步骤403和步骤404均为正常处理生产者的消息处理请求,将生产者发送的消息放入Partition的消息队列存储。而在步骤405中,由于Partition已经产生了消息积压,所以Partition向生产者的消息队列客户端返回队列满指令,并且返回推荐切换的目标Partition。
例如,Partition2在产生消息积压时,可以向Producer A返回队列满指令,使得Producer A据此获知Partition2的消息处理速度较慢,可以根据Partition2返回的目标Partition,将原来向Partition2发送的消息进行重发,重发至所述目标Partition,即调整了消息的发送队列。如图3所示,在消息重发过程中的“2”标识的虚线箭头线,表示Partition 2向Producer A返回队列满指令和目标Partition,例如,本例子中目标Partition即为图3中的Partition 1。
其中,Partition 2返回推荐切换的目标Partition的过程,可以参见图5的示例。如图5所示,消息队列服务端还可以包括队列管理器51,Partition 2可以向该队列管理器51请求推荐切换的目标Partition。队列管理器51中可以存储位于同一Topic下的各个Partition的队列负载状态,例如,可以包括同属于TopicA的Partition 1、Partition 2和Partition 3的负载状态,比如,Partition 1的当前队列长度是3000消息,Partition 2的当前队列长度是3901个消息,Partition 3的当前队列长度是3600个消息。假设预定的负载最大阈值是3900个消息,即一个Partition中的消息达到3900时就出现积压,那么队列管理器51据此可以由Partition 1和Partition 3选择一个,例如可以选择Partition 1作为目标Partition,推荐至Partition2,Partition2再将该目标Partition返回给Producer A。
在步骤406中,作为生产者的消息队列客户端根据队列满指令,将生产的消息转发至目标Partition。
例如,Producer A接收到Partition2返回的队列满指令后,可以将消息转发至Partition2推荐的Partition 1。如图3所示,在消息重发过程中的“3”标识的虚线箭头线,表示Producer A向Partition 1发送消息。Partition 1在接收到该消息后,可以同样如Partition2那样,判断当前的队列长度是否达到阈值,本例子中,Partition 1将确定未达到阈值,则接受并存储该消息,并向Producer A返回处理完成指令。图3中的消息重发过程的“4”标识的虚线箭头线,表示Partition 1向Producer A返回处理完成指令。
本例子的消息处理方法,通过由消息队列服务端的Partition在消息积压时,向生产者的消息队列客户端返回队列满指令以及推荐的目标Partition,可以触发生产者的消息队列客户端将原本发送至积压Partition的消息重发至该目标Partition,从而达到了转移数据减少积压的效果。
图3中在Partition和Consumer之间,实施了由Consumer将产生积压的Partition2的消息转移至Partition1,相当于消息的转发,图6对应描述这一过程:
在步骤601中,作为消费者的消息队列客户端向队列分组Partition拉取消息。例如,图3中的Consumer B根据预先配置好的对应关系,向对应的Partition2拉取消息,即图3中示例的消息转发过程中的“1”标识的虚线箭头线,表示Consumer B由Partition2拉取消息。
在步骤602中,当前的Partition判断当前的队列长度是否达到阈值。
例如,当前的Partition即Partition2,该Partition2可以判断队列长度是否大于或等于预定的长度阈值。本步骤的判断结果若是未达到阈值,说明该Partition尚未出现消息积压,可以继续执行步骤603;否则,若达到阈值,则说明该Partition已经出现了消息积压,消息的处理速度较慢,继续执行步骤604。
在步骤603中,作为消费者的消息队列客户端正常处理消息。
在步骤604中,当前的Partition向消费者的消息队列客户端返回队列满指令,并且返回推荐切换的目标Partition。
例如,Partition2在产生消息积压时,可以向Consumer B返回队列满指令,使得Consumer B据此获知Partition2的消息处理速度较慢,可以根据Partition2返回的目标Partition,将拉取的消息转发至目标Partition。其中,目标Partition的推荐过程可以如图5的示例,不再详述。如图3所示,在消息转发过程中的“1”标识的虚线箭头线,表示Partition 2向Consumer B返回队列满指令和目标Partition,例如,本例子中目标Partition即为图3中的Partition 1。
在步骤605中,作为消费者的消息队列客户端根据队列满指令,将拉取的消息转发至目标Partition。
本步骤中,Partition2的消息积压可能是由于Consumer B的机器负载高或者机器本身硬件配置差造成,Consumer B对消息的消费速度较慢,因此可以通过本例子的方法,使得Consumer B在拉取消息后,不再自己消费处理,而是将消息转发至尚未积压的目标Partition,由目标Partition对应的Consumer来消费处理。这一过程中,Consumer B由消费者转变为消息生产者的角色,将消息转发到了积压少的队列中。如图3所示,在消息转发过程中的“2”标识的虚线箭头线,表示Consumer B将拉取的消息向Partition 1转发。
Partition 1在接收到该消息后,后续该消息将被Consumer A拉取,即图3中的消息转发过程的“3”标识的虚线箭头线,表示Consumer A由Partition 1拉取消息。Partition1可以同样如Partition2那样,判断当前的队列长度是否达到阈值,本例子中,Partition 1将确定未达到阈值,则不向Consumer A返回队列满指令,Consumer A可以正常消费处理该消息。
本例子的消息处理方法,通过由消息队列服务端的Partition在消息积压时,向拉取消息的作为消费者的消息队列客户端返回队列满指令以及推荐的目标Partition,可以触发消费者的消息队列客户端将由积压Partition拉取的消息转发至目标Partition,从而达到了转移数据减少积压的效果。
由上述例子的描述可以看到,本公开的消息处理方法是由消息队列服务端的Partition来判断是否出现消息积压,并在积压产生时向客户端返回队列满指令,使得客户端能够感知到服务端队列的消息处理速度和状态,并可以根据Partition推荐的队列来转移消息,减轻Partition的积压。如图7所示:
在步骤701中,一个队列分组Partition接收所述消息队列客户端发送的消息处理请求。
例如,该消息队列客户端发送的消息处理请求可以是生产者端的发送消息,或者还可以是消费者端的拉取消息。
在步骤702中,所述队列分组Partition判断当前的队列长度是否达到阈值,若达到阈值,则向所述消息队列客户端返回队列满指令,并且返回推荐切换的目标Partition。
例如,不论Partition接收到的消息处理请求是拉取消息还是发送消息,都可以执行本步骤的判断,并在队列长度达到阈值时返回队列满指令和推荐的目标Partition。
在步骤703中,所述消息队列客户端根据所述队列满指令,向所述目标Partition转发消息。
例如,本步骤的向目标Partition转发消息,可以是生产者的客户端将发送的消息重发至目标Partition,减少了产生积压的Partition的消息进入;或者也可以是作为消费者的客户端将拉取的消息转发至目标Partition,转由目标Partition对应的Consumer消费,从而加快产生积压的Partition的消息流出。
本例子的基于消息队列系统的消息处理方法,通过由消息队列服务端的Partition来判断是否出现消息积压,并在积压产生时向客户端返回队列满指令,使得客户端可以根据Partition推荐的队列来转移消息,从而加快消息整体的处理速度,降低消息处理的延迟时间。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本公开时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机指令的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。例如,所述计算机指令被设备中的处理器执行时可以实现以下步骤:一个队列分组Partition接收所述消息队列客户端发送的消息处理请求;所述队列分组Partition判断当前的队列长度是否达到阈值,若达到阈值,则向所述消息队列客户端返回队列满指令,并且返回推荐切换的目标Partition;所述消息队列客户端根据所述队列满指令,向所述目标Partition转发消息。
在一个例子中,本公开还可以提供一种消息处理设备,该设备可以包括存储器、一个或多个处理器(CPU)、输入/输出接口、网络接口和内存,以及存储在存储器上并可在处理器上运行的计算机指令。所述处理器执行所述指令时实现以下步骤:一个队列分组Partition接收所述消息队列客户端发送的消息处理请求;所述队列分组Partition判断当前的队列长度是否达到阈值,若达到阈值,则向所述消息队列客户端返回队列满指令,并且返回推荐切换的目标Partition;所述消息队列客户端根据所述队列满指令,向所述目标Partition转发消息。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。

Claims (10)

1.一种基于消息队列系统的消息处理方法,所述消息队列系统包括消息队列服务端和消息队列客户端,所述消息队列服务端包括属于同一消息主题的多个队列分组;所述方法包括:
一个队列分组接收作为生产者的消息队列客户端发送的消息;
所述队列分组判断当前的队列长度是否达到阈值,若达到阈值,则向所述作为生产者的消息队列客户端返回队列满指令,并且返回推荐切换的目标队列分组;
所述作为生产者的消息队列客户端根据所述队列满指令,将生产的消息转发至所述目标队列分组;
所述队列分组接收作为消费者的消息队列客户端拉取消息的请求,所述作为消费者的消息队列客户端用于订阅所述消息主题并处理所述消息主题下的队列分组中发布的消息;
所述队列分组判断当前的队列长度是否达到阈值,若达到阈值,则向所述消费者的消息队列客户端返回队列满指令,并且返回推荐切换的目标队列分组;
所述作为消费者的消息队列客户端根据所述队列满指令,将由所述队列分组拉取的消息转发至所述目标队列分组,以由所述目标队列分组对应的消费者的消息队列客户端进行处理。
2.根据权利要求1所述的方法,所述返回推荐切换的目标队列分组,包括:
所述队列分组向所述消息队列服务端的队列管理器请求推荐切换的目标对列分组;
所述队列管理器根据位于同一消息主题下的各个队列分组的队列负载状态,选择当前负载低于负载最大阈值的队列分组作为所述目标队列分组。
3.根据权利要求1所述的方法,所述方法还包括:若当前的所述队列分组的队列长度未达到阈值,则所述队列分组接受并存储所述作为生产者的消息队列客户端发送的消息;或者,若当前的所述队列分组的队列长度未达到阈值,则由所述队列分组对应的消费者的消息队列客户端处理拉取到的消息。
4.一种消息队列系统,所述系统包括:消息队列服务端和消息队列客户端,所述消息队列服务端包括属于同一消息主题的多个队列分组,所述消息队列客户端包括作为生产者的消息队列客户端和作为消费者的消息队列客户端;
所述消息队列服务端的其中一个队列分组,用于在接收到所述作为生产者的消息队列客户端发送的消息时,或者在接收到作为消费者的消息队列客户端拉取消息的请求时,判断当前的队列长度是否达到阈值,若达到阈值,则向所述消息队列客户端返回队列满指令,并且返回推荐切换的目标队列分组;
所述作为生产者的消息队列客户端,用于根据所述队列满指令,将向所述队列分组发送的消息转发至所述目标队列分组;
所述作为消费者的消息队列客户端,用于根据所述队列满指令,将由所述队列分组拉取的消息转发至所述目标队列分组。
5.根据权利要求4所述的系统,所述消息队列服务端的所述队列分组,具体用于向所述消息队列服务端的队列管理器请求推荐切换的目标队列分组;所述队列管理器,用于根据位于同一消息主题下的各个队列分组的队列负载状态,选择当前负载低于负载最大阈值的队列分组作为所述目标队列分组。
6.根据权利要求4所述的系统,所述队列分组,还用于若当前的所述队列分组的队列长度未达到阈值,则接受并存储所述作为生产者的消息队列客户端发送的消息,或者,将消息发送至对应的作为消费者的消息队列客户端处理。
7.一种计算机可读存储介质,所述介质上存储有计算机指令,该指令被处理器执行时,用于实现消息队列系统,所述消息队列系统包括消息队列服务端和消息队列客户端,所述消息队列服务端包括属于同一消息主题的多个队列分组;所述消息队列系统执行以下步骤:
一个队列分组接收作为生产者的消息队列客户端发送的消息;
所述队列分组判断当前的队列长度是否达到阈值,若达到阈值,则向所述作为生产者的消息队列客户端返回队列满指令,并且返回推荐切换的目标队列分组;
所述作为生产者的消息队列客户端根据所述队列满指令,将生产的消息转发至所述目标队列分组;
所述队列分组接收作为消费者的消息队列客户端拉取消息的请求,所述作为消费者的消息队列客户端用于订阅所述消息主题并处理所述消息主题下的队列分组中发布的消息;
所述队列分组判断当前的队列长度是否达到阈值,若达到阈值,则向所述消费者的消息队列客户端返回队列满指令,并且返回推荐切换的目标队列分组;
所述作为消费者的消息队列客户端根据所述队列满指令,将由所述队列分组拉取的消息转发至所述目标队列分组,以由所述目标队列分组对应的消费者的消息队列客户端进行处理。
8.根据权利要求7所述的介质,所述消息队列系统的消息队列服务端还包括队列管理器;所述队列分组用于向所述队列管理器请求推荐切换的目标对列分组;所述队列管理器用于根据位于同一消息主题下的各个队列分组的队列负载状态,选择当前负载低于负载最大阈值的队列分组作为所述目标队列分组。
9.一种消息处理设备,所述设备包括存储器、处理器,以及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现消息队列系统,所述消息队列系统包括消息队列服务端和消息队列客户端,所述消息队列服务端包括属于同一消息主题的多个队列分组;所述消息队列系统执行以下步骤:
一个队列分组接收作为生产者的消息队列客户端发送的消息;
所述队列分组判断当前的队列长度是否达到阈值,若达到阈值,则向作为生产者的所述消息队列客户端返回队列满指令,并且返回推荐切换的目标队列分组;
所述作为生产者的消息队列客户端根据所述队列满指令,将生产的消息转发至所述目标队列分组;
所述队列分组接收作为消费者的消息队列客户端拉取消息的请求,所述作为消费者的消息队列客户端用于订阅所述消息主题并处理所述消息主题下的队列分组中发布的消息;
所述队列分组判断当前的队列长度是否达到阈值,若达到阈值,则向所述消费者的消息队列客户端返回队列满指令,并且返回推荐切换的目标队列分组;
所述作为消费者的消息队列客户端根据所述队列满指令,将由所述队列分组拉取的消息转发至所述目标队列分组,以由所述目标队列分组对应的消费者的消息队列客户端进行处理。
10.根据权利要求9所述的设备,所述消息队列系统的消息队列服务端还包括队列管理器;所述队列分组用于向所述队列管理器请求推荐切换的目标对列分组;所述队列管理器用于根据位于同一消息主题下的各个队列分组的队列负载状态,选择当前负载低于负载最大阈值的队列分组作为所述目标队列分组。
CN201710366692.5A 2017-05-23 2017-05-23 一种基于消息队列系统的消息处理方法和装置 Active CN107197015B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710366692.5A CN107197015B (zh) 2017-05-23 2017-05-23 一种基于消息队列系统的消息处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710366692.5A CN107197015B (zh) 2017-05-23 2017-05-23 一种基于消息队列系统的消息处理方法和装置

Publications (2)

Publication Number Publication Date
CN107197015A true CN107197015A (zh) 2017-09-22
CN107197015B CN107197015B (zh) 2020-09-08

Family

ID=59875814

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710366692.5A Active CN107197015B (zh) 2017-05-23 2017-05-23 一种基于消息队列系统的消息处理方法和装置

Country Status (1)

Country Link
CN (1) CN107197015B (zh)

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108009028A (zh) * 2017-11-29 2018-05-08 中国平安人寿保险股份有限公司 消息处理方法、装置、设备及计算机可读存储介质
CN108021358A (zh) * 2017-12-15 2018-05-11 无线生活(杭州)信息科技有限公司 一种数据处理方法及装置
CN108196961A (zh) * 2017-12-28 2018-06-22 广东蜂助手网络技术股份有限公司 一种异步消息处理方法、终端、系统及存储介质
CN108259377A (zh) * 2018-02-13 2018-07-06 中国联合网络通信集团有限公司 队列分配方法及装置
CN108509266A (zh) * 2018-04-11 2018-09-07 北京小度信息科技有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
CN108897607A (zh) * 2018-06-05 2018-11-27 中国平安人寿保险股份有限公司 消息处理方法、装置、电子设备及存储介质
CN108924041A (zh) * 2018-08-03 2018-11-30 北京捷易迅信息技术有限公司 一种即时通讯中消息高效可靠发送方法
CN109032821A (zh) * 2018-08-27 2018-12-18 百度在线网络技术(北京)有限公司 主题消息处理方法、装置、设备及存储介质
CN109067844A (zh) * 2018-07-09 2018-12-21 上海瀚银信息技术有限公司 一种消息通讯系统
CN109361770A (zh) * 2018-12-11 2019-02-19 苏州创旅天下信息技术有限公司 基于WebSocket和消息队列实现双向实时通信的系统及方法
CN109743137A (zh) * 2019-01-10 2019-05-10 浙江小泰科技有限公司 一种支持更新的分布式延迟消息队列处理系统
CN109947701A (zh) * 2019-03-28 2019-06-28 深圳市六度人和科技有限公司 基于nsq消息队列的文件导入方法、装置、设备及存储介质
CN110572331A (zh) * 2018-06-06 2019-12-13 天津京东深拓机器人科技有限公司 消息处理方法及其系统
CN110708312A (zh) * 2019-09-30 2020-01-17 交控科技股份有限公司 一种ats中消息传递的方法、系统和ats
CN110875935A (zh) * 2018-08-30 2020-03-10 阿里巴巴集团控股有限公司 消息发布、处理、订阅方法、装置及系统
CN110971430A (zh) * 2018-09-29 2020-04-07 北京国双科技有限公司 自动化扩容缩容的控制方法、装置、存储介质及处理器
CN111045837A (zh) * 2019-11-26 2020-04-21 福建天泉教育科技有限公司 跨服务消费的方法、存储介质
CN111130999A (zh) * 2019-12-23 2020-05-08 飞天诚信科技股份有限公司 一种适用于分布式消息传输的方法及总线适配器
CN111282263A (zh) * 2020-03-03 2020-06-16 北京奇艺世纪科技有限公司 事件消息的处理方法、装置、电子设备及可读存储介质
CN111385321A (zh) * 2018-12-28 2020-07-07 深圳市优必选科技有限公司 一种节点响应方法、系统及机器人
CN111541667A (zh) * 2020-04-16 2020-08-14 广东好太太科技集团股份有限公司 一种系统间消息通信的方法、设备、存储介质
CN111953506A (zh) * 2019-05-15 2020-11-17 北京沃东天骏信息技术有限公司 消息处理方法和处理系统
WO2020259354A1 (zh) * 2019-06-26 2020-12-30 深圳前海微众银行股份有限公司 队列调整方法、装置、设备及计算机可读存储介质
CN112395103A (zh) * 2020-11-02 2021-02-23 天津五八到家货运服务有限公司 延迟消息发送方法、装置及存储介质
CN113342544A (zh) * 2021-05-27 2021-09-03 北京奇艺世纪科技有限公司 数据存储架构的设计方法、消息传输方法及装置
CN114244832A (zh) * 2021-12-16 2022-03-25 广发基金管理有限公司 一种自定义Prometheus收集日志信息指标的方法和系统
CN114448989A (zh) * 2022-01-26 2022-05-06 北京百度网讯科技有限公司 调整消息分发的方法、装置、电子设备、存储介质及产品
CN114598593A (zh) * 2022-02-16 2022-06-07 阿里巴巴(中国)有限公司 消息处理方法、系统、计算设备及计算机存储介质
CN114979238A (zh) * 2022-05-24 2022-08-30 浪潮软件集团有限公司 多客户端数据实时推送方法及系统
CN117295118A (zh) * 2023-10-08 2023-12-26 广州市玄武无线科技股份有限公司 一种稳定性强且短信数据缓冲及流量控制的方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1714340A (zh) * 2002-10-15 2005-12-28 皇家飞利浦电子股份有限公司 使数据处理设备中的至少两个处理装置同步化的数据处理设备和方法
CN103516580A (zh) * 2012-06-26 2014-01-15 北京大学 一种基于消息队列实现消息接收与转发的方法及系统
CN104092767A (zh) * 2014-07-21 2014-10-08 北京邮电大学 一种增加消息队列模型的发布/订阅系统及其工作方法
CN104753817A (zh) * 2013-12-25 2015-07-01 中国移动通信集团公司 一种云计算消息队列服务本地模拟方法和系统
CN105791143A (zh) * 2016-03-09 2016-07-20 大连理工大学 一种移动性与dsrc/wave网络相关反馈的自适应速率控制方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1714340A (zh) * 2002-10-15 2005-12-28 皇家飞利浦电子股份有限公司 使数据处理设备中的至少两个处理装置同步化的数据处理设备和方法
CN103516580A (zh) * 2012-06-26 2014-01-15 北京大学 一种基于消息队列实现消息接收与转发的方法及系统
CN104753817A (zh) * 2013-12-25 2015-07-01 中国移动通信集团公司 一种云计算消息队列服务本地模拟方法和系统
CN104092767A (zh) * 2014-07-21 2014-10-08 北京邮电大学 一种增加消息队列模型的发布/订阅系统及其工作方法
CN105791143A (zh) * 2016-03-09 2016-07-20 大连理工大学 一种移动性与dsrc/wave网络相关反馈的自适应速率控制方法

Cited By (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108009028A (zh) * 2017-11-29 2018-05-08 中国平安人寿保险股份有限公司 消息处理方法、装置、设备及计算机可读存储介质
CN108021358A (zh) * 2017-12-15 2018-05-11 无线生活(杭州)信息科技有限公司 一种数据处理方法及装置
CN108196961A (zh) * 2017-12-28 2018-06-22 广东蜂助手网络技术股份有限公司 一种异步消息处理方法、终端、系统及存储介质
CN108196961B (zh) * 2017-12-28 2020-05-12 蜂助手股份有限公司 一种异步消息处理方法、终端、系统及存储介质
CN108259377A (zh) * 2018-02-13 2018-07-06 中国联合网络通信集团有限公司 队列分配方法及装置
CN108509266A (zh) * 2018-04-11 2018-09-07 北京小度信息科技有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
CN108897607A (zh) * 2018-06-05 2018-11-27 中国平安人寿保险股份有限公司 消息处理方法、装置、电子设备及存储介质
CN110572331A (zh) * 2018-06-06 2019-12-13 天津京东深拓机器人科技有限公司 消息处理方法及其系统
CN109067844A (zh) * 2018-07-09 2018-12-21 上海瀚银信息技术有限公司 一种消息通讯系统
CN108924041A (zh) * 2018-08-03 2018-11-30 北京捷易迅信息技术有限公司 一种即时通讯中消息高效可靠发送方法
CN109032821A (zh) * 2018-08-27 2018-12-18 百度在线网络技术(北京)有限公司 主题消息处理方法、装置、设备及存储介质
CN109032821B (zh) * 2018-08-27 2021-12-28 百度在线网络技术(北京)有限公司 自动驾驶主题消息处理方法、装置、设备及存储介质
CN110875935A (zh) * 2018-08-30 2020-03-10 阿里巴巴集团控股有限公司 消息发布、处理、订阅方法、装置及系统
CN110971430A (zh) * 2018-09-29 2020-04-07 北京国双科技有限公司 自动化扩容缩容的控制方法、装置、存储介质及处理器
CN109361770A (zh) * 2018-12-11 2019-02-19 苏州创旅天下信息技术有限公司 基于WebSocket和消息队列实现双向实时通信的系统及方法
CN111385321A (zh) * 2018-12-28 2020-07-07 深圳市优必选科技有限公司 一种节点响应方法、系统及机器人
CN109743137A (zh) * 2019-01-10 2019-05-10 浙江小泰科技有限公司 一种支持更新的分布式延迟消息队列处理系统
CN109743137B (zh) * 2019-01-10 2022-01-14 浙江小泰科技有限公司 一种支持更新的分布式延迟消息队列处理系统
CN109947701A (zh) * 2019-03-28 2019-06-28 深圳市六度人和科技有限公司 基于nsq消息队列的文件导入方法、装置、设备及存储介质
CN109947701B (zh) * 2019-03-28 2023-08-29 深圳市六度人和科技有限公司 基于nsq消息队列的文件导入方法、装置、设备及存储介质
CN111953506A (zh) * 2019-05-15 2020-11-17 北京沃东天骏信息技术有限公司 消息处理方法和处理系统
WO2020259354A1 (zh) * 2019-06-26 2020-12-30 深圳前海微众银行股份有限公司 队列调整方法、装置、设备及计算机可读存储介质
CN110708312A (zh) * 2019-09-30 2020-01-17 交控科技股份有限公司 一种ats中消息传递的方法、系统和ats
CN111045837B (zh) * 2019-11-26 2023-10-20 福建天泉教育科技有限公司 跨服务消费的方法、存储介质
CN111045837A (zh) * 2019-11-26 2020-04-21 福建天泉教育科技有限公司 跨服务消费的方法、存储介质
CN111130999A (zh) * 2019-12-23 2020-05-08 飞天诚信科技股份有限公司 一种适用于分布式消息传输的方法及总线适配器
CN111130999B (zh) * 2019-12-23 2021-08-31 飞天诚信科技股份有限公司 一种适用于分布式消息传输的方法及总线适配器
CN111282263A (zh) * 2020-03-03 2020-06-16 北京奇艺世纪科技有限公司 事件消息的处理方法、装置、电子设备及可读存储介质
CN111541667A (zh) * 2020-04-16 2020-08-14 广东好太太科技集团股份有限公司 一种系统间消息通信的方法、设备、存储介质
CN112395103B (zh) * 2020-11-02 2022-09-13 天津五八到家货运服务有限公司 延迟消息发送方法、装置及存储介质
CN112395103A (zh) * 2020-11-02 2021-02-23 天津五八到家货运服务有限公司 延迟消息发送方法、装置及存储介质
CN113342544A (zh) * 2021-05-27 2021-09-03 北京奇艺世纪科技有限公司 数据存储架构的设计方法、消息传输方法及装置
CN113342544B (zh) * 2021-05-27 2023-09-01 北京奇艺世纪科技有限公司 数据存储架构的设计方法、消息传输方法及装置
CN114244832A (zh) * 2021-12-16 2022-03-25 广发基金管理有限公司 一种自定义Prometheus收集日志信息指标的方法和系统
CN114448989A (zh) * 2022-01-26 2022-05-06 北京百度网讯科技有限公司 调整消息分发的方法、装置、电子设备、存储介质及产品
CN114448989B (zh) * 2022-01-26 2024-04-05 北京百度网讯科技有限公司 调整消息分发的方法、装置、电子设备、存储介质及产品
CN114598593A (zh) * 2022-02-16 2022-06-07 阿里巴巴(中国)有限公司 消息处理方法、系统、计算设备及计算机存储介质
CN114598593B (zh) * 2022-02-16 2023-08-29 阿里巴巴(中国)有限公司 消息处理方法、系统、计算设备及计算机存储介质
CN114979238A (zh) * 2022-05-24 2022-08-30 浪潮软件集团有限公司 多客户端数据实时推送方法及系统
CN117295118A (zh) * 2023-10-08 2023-12-26 广州市玄武无线科技股份有限公司 一种稳定性强且短信数据缓冲及流量控制的方法

Also Published As

Publication number Publication date
CN107197015B (zh) 2020-09-08

Similar Documents

Publication Publication Date Title
CN107197015A (zh) 一种基于消息队列系统的消息处理方法和装置
US9762690B2 (en) Push notification delivery system
US7627618B2 (en) System for managing data collection processes
CN107391271A (zh) 一种基于消息队列系统的延时任务触发方法和装置
CN106325998A (zh) 一种基于云计算的应用部署的方法和装置
CN110808922A (zh) 一种消息处理方法、装置、存储介质及电子设备
CN109218341B (zh) 用于监控服务器和用于服务器的负载均衡方法和装置
CN112579148B (zh) 基于业务代理的业务消息处理方法、装置及电子设备
US20110302250A1 (en) Thread data aggregation
KR101795333B1 (ko) 클라우드 프로세스 관리
CN103634224A (zh) 网络中数据传输的方法和系统
CN110457138A (zh) 游戏服务器集群的管理方法、装置及电子设备
CN107147921A (zh) 基于切片与智能cdn调度的视频播放加速方法和设备
CN107071332A (zh) 视频图像传输处理方法和视频图像传输处理装置
CN112600878A (zh) 一种数据传输方法及装置
CN109842652A (zh) 一种文件的上传方法、终端、云服务器和计算机存储介质
CN103475520B (zh) 一种分布式网络中的事务处理控制方法及装置
CN107959667A (zh) 一种媒体分片的推送方法、服务器及客户端
CN109710502A (zh) 日志传输方法、装置及存储介质
CN110349076B (zh) 数据的处理方法及装置
CN109862069B (zh) 消息处理方法和装置
CN109858945A (zh) 存储器、基于微信小程序的用户结果数据生成方法和设备
US20170346753A1 (en) Method and device for forwarding data messages
CN108521382A (zh) 一种消息发送方法、装置及系统
CN104917692B (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
TR01 Transfer of patent right

Effective date of registration: 20200923

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200923

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Patentee before: Alibaba Group Holding Ltd.

TR01 Transfer of patent right