CN103761141A - 一种实现消息队列的方法及装置 - Google Patents

一种实现消息队列的方法及装置 Download PDF

Info

Publication number
CN103761141A
CN103761141A CN201310683683.0A CN201310683683A CN103761141A CN 103761141 A CN103761141 A CN 103761141A CN 201310683683 A CN201310683683 A CN 201310683683A CN 103761141 A CN103761141 A CN 103761141A
Authority
CN
China
Prior art keywords
message
queue
sign
storage list
memory system
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.)
Pending
Application number
CN201310683683.0A
Other languages
English (en)
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.)
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co 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 Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201310683683.0A priority Critical patent/CN103761141A/zh
Publication of CN103761141A publication Critical patent/CN103761141A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明公开一种实现消息队列的方法及装置,属于计算机技术领域。所述装置包括:写队列接口,适于接收消息生产者的写消息请求,所述写消息请求中包括待写入消息和所述待写入消息所属消息队列的第一标识;读队列接口,适于接收消息消费者的读消息请求,所述读消息请求中包括待读取消息所属消息队列的第二标识;消息处理器,适于根据消息队列标识与分布式存储系统中存储表的对应关系,将待写入消息存储到与所述第一标识对应的存储表中,以及,从与所述第二标识对应的存储表中顺序读取一条消息,将读取到的消息通过所述读队列接口发送到消息消费者。根据本发明,使得消息队列能够支持较大消息的存储和传递,并提升了消息队列的可扩展性。

Description

一种实现消息队列的方法及装置
技术领域
本发明涉及计算机技术领域,具体涉及一种实现消息队列的方法及装置。
背景技术
消息(Message)是在两台计算机间传送的数据,消息可以非常简单,只包含少量文本字符串,也可以更复杂,包含较大的对象数据。消息队列机制为应用程序开发人员提供了一种应用程序间快速可靠的通信方式,即通过消息的传递来实现信息的交互。如图1所示,消息队列机制的组件分为三种,即消息的生产者(Producer)、消息的消费者(Consumer)以及消息的中继机构-消息队列(Message Queue,MQ)。消息队列是在消息的传输过程中保存消息的容器,生产者创建消息,将消息发送到消息队列暂存,消费者从消息队列中读取消息并执行。
由于消息队列机制的广泛应用,目前在该领域存在多种开源或闭源的消息队列实现方案,如ActiveMQ和Kafka等。ActiveMQ是Apache社区的开源消息队列实现,支持多种语言和协议编写客户端,如Java、C、Perl、Python和PHP等。ActiveMQ是典型的一主多从的结构,即生产者发送消息时会首先在主节点上存储一份,同时同步到多个从节点上存储,靠冗余机制保证消息不丢失。在该方案中,消息会一直存储在MQ中,并维护着每一条消息的状态,直到消费者消费完成后通知MQ,由MQ决定是否要将消息删除。
ActiveMQ的缺点在于:由于消费者在消费操作完成后,需要和MQ多次交互确认才能成功删除消息,同时由于MQ消息的存储性能不高,导致读写性能较差,消费效率较低,往往导致队列堆积严重;而如果消息较大,堆积严重,则主节点磁盘存储空间就成为严重的瓶颈;因而ActiveMQ无法支持较大消息的传递。
Kafka是一种轻量级的消息队列模式,和ActiveMQ不同,其消息的状态是由消费者维护的,即MQ只负责消息的存储,不负责消息的状态维护。而消息是否是被消费过,只有消费者自己知晓,这样就极大地简化了消息队列MQ的设计复杂度。当然由于MQ中的消息不能任意删除,因此对消息队列磁盘存储空间的要求就更高了。
Kafka相对于ActiveMQ而言,取消了MQ对消息状态的维护功能,即MQ中的所有消息只写入不删除,消费者在消费完成后无需和MQ交互确认。虽然降低了交互开销,但由于消息不会被确认删除,消息队列的存储空间仍然是其瓶颈,因而Kafka亦不能支持较大消息的传递。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的实现消息队列的方法和装置。
根据本发明的一个方面,提供了一种实现消息队列的装置,包括:
写队列接口,适于接收消息生产者的写消息请求,所述写消息请求中包括待写入消息和所述待写入消息所属消息队列的第一标识;
读队列接口,适于接收消息消费者的读消息请求,所述读消息请求中包括待读取消息所属消息队列的第二标识;
消息处理器,适于根据消息队列标识与分布式存储系统中存储表的对应关系,将待写入消息存储到与所述第一标识对应的存储表中,以及,从与所述第二标识对应的存储表中顺序读取一条消息,将读取到的消息通过所述读队列接口发送到所述消息消费者。
可选地,所述装置还包括:对应关系建立器,适于建立消息队列标识与分布式存储系统中存储表的对应关系。
可选地,所述读消息请求中还包括是否删除读取到的消息的第三标识;
所述消息处理器还适于当根据所述第三标识确定需要删除读取到的消息,且从存储表中顺序读取到一条消息后,从所述存储表中删除读取到的消息。
可选地,所述消息处理器通过调用所述分布式存储系统的写接口将消息写入存储表,通过调用所述分布式存储系统的扫描接口从存储表中顺序读取消息。
可选地,所述分布式存储系统为Cassandra系统。
根据本发明的另一个方面,提供了一种实现消息队列的方法,包括:
接收消息生产者的写消息请求,所述写消息请求中包括待写入消息和所述待写入消息所属消息队列的第一标识;
根据消息队列标识与分布式存储系统中存储表的对应关系,将待写入消息存储到与所述第一标识对应的存储表中;
接收消息消费者的读消息请求,所述读消息请求中包括待读取消息所属消息队列的第二标识;
根据消息队列标识与分布式存储系统中存储表的对应关系,从与所述第二标识对应的存储表中顺序读取一条消息,将读取到的消息发送到所述消息消费者。
可选地,所述方法还包括:建立消息队列标识与分布式存储系统中存储表的对应关系。
可选地,所述读消息请求中还包括是否删除读取到的消息的第三标识;
所述方法还包括:当根据所述第三标识确定需要删除读取到的消息,且从存储表中顺序读取到一条消息后,从所述存储表中删除读取到的消息。
可选地,通过调用所述分布式存储系统的写接口将消息存储到存储表,通过调用所述分布式存储系统的扫描接口从存储表中顺序读取消息。
可选地,所述分布式存储系统为Cassandra系统。
根据本发明上述的一个或多个技术方案,通过引入分布式存储系统作为消息队列的存储模块,使得消息队列能够支持较大消息的存储和传递,并提升了消息队列的可扩展性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了生产者与消费者通过消息队列进行通信的示意图;
图2示出了根据本发明一个实施例的实现消息队列的装置结构图;
图3示出了根据本发明一个实施例的实现消息队列的装置的应用实例;
图4示出了根据本发明一个实施例的实现消息队列的方法中写消息队列的流程图;
图5示出了根据本发明一个实施例的实现消息队列的方法中读消息队列的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图2示出了根据本发明一个实施例的实现消息队列的装置结构图。参照图2,所述实现消息队列的装置10可以包括写队列接口12、读队列接口14和消息处理器16。
写队列接口12适于接收消息生产者20的写消息请求,所述写消息请求中包括待写入消息和所述待写入消息所属消息队列的第一标识。
在计算机通信领域,消息生产者20一般指的是一个应用程序,该应用程序通常需要与另外一个应用程序即消息消费者30进行信息交互,这种信息交互通常是通过消息的传递来实现的,而消息队列是在消息的传输过程中保存消息的容器,消息队列的主要目的是提供路由并保证消息的正确传递。消息生产者20创建一个消息后,可以构建一个写消息请求,并将所述写消息请求发送到所述写队列接口12。一个消息队列通常对应一对消息生产者和消息消费者,因此,为区分不同消息生产者所创建的消息,所述写消息请求中除了携带待写入消息之外,还会携带待写入消息所属的消息队列的标识。
在本发明实施例中,是将分布式存储系统40作为消息队列的存储装置,所述分布式存储系统40中存储有一个或多个存储表,每个存储表用于存储一个消息队列,存储表的每条数据记录对应一条消息,且每个存储表在所述分布式存储系统中存储一份或多份(即具有一个或多个副本)。消息处理器16检测到写队列接口12中有写消息请求到达后,对所述写消息请求进行解析,获取其包括的待写入消息和所述待写入消息所属消息队列的第一标识,然后,根据消息队列标识与分布式存储系统40中存储表的对应关系,将待写入消息存储到与所述第一标识对应的存储表中。其中,所述对应关系可以预先建立并存储在所述实现消息队列的装置10中。
消息消费者30需要获取消息进行处理时,会构造一个读消息请求发送到读队列接口14,同样,所述读消息请求中会携带待读取消息所属消息队列的第二标识。消息处理器16检测到读队列接口14中有读消息请求到达后,对所述读消息请求进行解析,获取其包括的待读取消息所属消息队列的第二标识,然后,根据消息队列标识与分布式存储系统40中存储表的对应关系,从与所述第二标识对应的存储表中顺序读取一条消息,并将读取到的消息通过所述读队列接口14发送到所述消息消费者30。
这样,通过引入分布式存储系统作为消息队列的存储模块,利用分布式存储系统的存储能力,就使得消息队列能够支持较大消息的存储和传递,并提升了消息队列存储的可靠性和可扩展性。其中,所述可靠性是利用所述分布式存储系统的冗余策略实现。所谓可扩展性是指,可以通过在分布式存储系统中增加数据节点,来增加消息队列的存储空间。
可选地,本发明实施例的实现消息队列的装置10还包括对应关系建立器(图未示),适于建立消息队列标识与分布式存储系统中存储表的对应关系。例如,消息生产者20和消息消费者30之间需要发起通信时,可以由所述对应关系建立器在所述分布式存储系统40中创建一个存储表,并在所述对应关系中增加一个记录项,该记录项记录了这对消息生产者20和消息消费者30所需要使用的消息队列与所创建的存储表的对应关系。
另外,在从存储表中读取到一条消息后,根据不同的实现策略,还可以确定是否将该消息从所述存储表中删除。具体地,所述读消息请求中还可以包括是否删除读取到的消息的第三标识,相应地,所述消息处理器16还适于当根据所述第三标识确定需要删除读取到的消息,且从存储表中顺序读取到一条消息后,从所述存储表中删除读取到的消息。
在具体实现时,所述消息处理器16可以通过调用所述分布式存储系统40的写接口44将消息写入存储表,并通过调用所述分布式存储系统40的扫描接口46从存储表中顺序读取消息。所述分布式存储系统40中包括多个节点42(图中示出了3个),节点42包括数据节点和接入节点两种类型,其中,所述写接口44和所述扫描接口44可以位于所述多个节点42中的接入节点中。
本发明实施例的实现消息队列的装置10可以部署在一台独立的服务器上,该服务器能够与所述分布式存储系统40进行通信,即能够调用所述分布式存储系统40的写接口44和扫描接口46对其中的存储表进行存取。另外,本发明实施例的实现消息队列的装置10作为一个模块存在与所述分布式存储系统40的接入节点中。
可选地,所述分布式存储系统40为Cassandra系统。Cassandra是依赖分布式哈希表(Distributed Hash Table,DHT)技术实现的一种典型的无中心节点的环形结构的分布式存储系统。DHT是一种分布式存储技术,在不需要中心节点的情况下,每个存储节点负责一个小范围的路由,并负责存储小部分数据,从而实现整个DHT分布式集群的寻址和存储。在Cassandra系统中,数据以键-值(Key-Value)对方式存储,通过对外提供的读写接口以及全局数据扫描接口进行数据存取和访问。
Cassandra节点的角色分为两种:接入节点和数据节点。接入节点负责计算数据及副本的分布,数据节点负责数据副本的存储。在Cassandra系统中,每个节点都既作为接入节点,又作为数据节点而存在。为了保证数据的可靠性,Cassandra一般要将数据写多份副本,并分散在不同的数据节点上。
需要说明的是,在本发明实施例中,所述分布式存储系统并不限于Cassandra系统,也可以是BigTable系统、Dynamo系统、Hadoop Hbase系统等其它任意的分布式存储系统。
以下给出本发明实施例的实现消息队列的装置的一个具体实现。
参照图3,该装置是在Cassandra存储集群之上封装的一层名称为MQ-Wrapper的中间件。该MQ-Wrapper中间件的主要作用是:对外向消息生产者(Producer)和消息消费者(Consumer)提供消息队列的标准接口,即前述的写队列接口和读队列接口,用于正常的数据生产(produce)和数据消费(consume);对内则调用Casandra通用的写接口(insert)和扫描接口(scan),进行消息的存储与读取。
假如Producer需要发送一个100K的消息到Consumer,则进行如下操作:
(1)首先会通过MQ-Wrapper的produce(queue0,message0)接口,将message0发送到queue0上,其中,message0是待写入消息,queue0是待写入消息所属消息队列的标识;
(2)在MQ-Wrapper内部则直接调用Cassandra本身的insert接口将这条100K的消息写入到存储表table_queue0中,其中,table_queue0是queue0对应的存储表。
在Comsumer进行数据消费时候,则进行如下操作:
(1)通过MQ-Wrapper的consume(queue0,deleteOnGet)接口调用获取一条消息进行消费,其中,queue0是待读取消息所属消息队列的标识,deleteOnGet表征在读取到消息后,是否在存储表中将该消息删除;
(2)在MQ-Wrapper内部则调用Casandra本身的scan接口,扫描存储表table_queue0,并在consume(queue0,deleteOnGet)调用时按序返回一条消息。
(3)当consume(queue0,deleteOnGet)成功返回一条消息后,如果设置了deleteOnGet标记为真(true),则MQ-Wrapper会在其内部会自动将此消息从存储表table_queue0中删除。
根据以上应用实例,消息存储在Cassandra系统中,和普通键-值(key-value)对的存储格式一致,消息采用三副本存储,即以Cassandra自身的冗余策略实现消息的可靠性,每个消息队列对应Cassandra中的一个存储表,每条消息对应存储表中的一条数据记录,所有针对此队列的生产、消费操作都围绕着这个存储表完成。如果设置该存储表可写入的value的最大值为100M,则该消息队列即可支持的最大消息为100M大小。
本发明实施例还提供一种实现消息队列的方法,所述方法可以包括写消息队列和读消息队列两个过程。
图4示出了根据本发明一个实施例的实现消息队列的方法中写消息队列的流程图,参照图4,写消息队列的过程包括:
步骤402,接收消息生产者的写消息请求,所述写消息请求中包括待写入消息和所述待写入消息所属消息队列的第一标识;
在计算机通信领域,消息生产者一般指的是一个应用程序,该应用程序通常需要与另外一个应用程序即消息消费者进行信息交互,这种信息交互通常是通过消息的传递来实现的,而消息队列是在消息的传输过程中保存消息的容器,消息队列的主要目的是提供路由并保证消息的正确传递。一个消息队列通常对应一对消息生产者和消息消费者,因此,为区分不同消息生产者所创建的消息,所述写消息请求中除了携带待写入消息之外,还会携带待写入消息所属的消息队列的标识。
步骤404,根据消息队列标识与分布式存储系统中存储表的对应关系,将待写入消息存储到与所述第一标识对应的存储表中。
在本发明实施例中,是将分布式存储系统作为消息队列的存储装置,所述分布式存储系统中存储有一个或多个存储表,每个存储表用于存储一个消息队列,存储表的每条数据记录对应一条消息,且每个存储表在所述分布式存储系统中存储一份或多份(即具有一个或多个副本)。在接收到消息生产者的写消息请求后,对所述写消息请求进行解析,获取其包括的待写入消息和所述待写入消息所属消息队列的第一标识,然后,根据消息队列标识与分布式存储系统中存储表的对应关系,就可以将待写入消息存储到与所述第一标识对应的存储表中。
可选地,本发明实施例的实现消息队列的方法方法还包括:建立消息队列标识与分布式存储系统中存储表的对应关系。
图5示出了根据本发明一个实施例的实现消息队列的方法中读消息队列的流程图,参照图5,读消息队列的过程可以包括:
步骤502,接收消息消费者的读消息请求,所述读消息请求中包括待读取消息所属消息队列的第二标识;
消息消费者需要获取消息进行处理时,会构造一个读消息请求,同样,所述读消息请求中会携带待读取消息所属消息队列的第二标识。
步骤504,根据消息队列标识与分布式存储系统中存储表的对应关系,从与所述第二标识对应的存储表中顺序读取一条消息,将读取到的消息发送到所述消息消费者。
在接收到消息消费者的读消息请求到达后,对所述读消息请求进行解析,获取其包括的待读取消息所属消息队列的第二标识,然后,根据消息队列标识与分布式存储系统中存储表的对应关系,就可以从与所述第二标识对应的存储表中顺序读取一条消息,并将读取到的消息发送到所述消息消费者。
另外,在从存储表中读取到一条消息后,根据不同的实现策略,还可以确定是否将该消息从所述存储表中删除。具体地,所述读消息请求中还可以包括是否删除读取到的消息的第三标识;相应地,本发明实施例的实现消息队列的方法方法还可以包括:当根据所述第三标识确定需要删除读取到的消息,且从存储表中顺序读取到一条消息后,从所述存储表中删除读取到的消息。
在步骤404中,可以通过调用所述分布式存储系统的写接口将消息存储到存储表,在步骤504中,可以通过调用所述分布式存储系统的扫描接口从存储表中顺序读取消息。
所述分布式存储系统可以为Cassandra系统或者其它任意的分布式存储系统。
综上所述,本发明实施例通过引入分布式存储系统作为消息队列的存储模块,使得消息队列能够支持较大消息的存储和传递,并提升了消息队列的可扩展性。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的实现消息队列的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (10)

1.一种实现消息队列的装置,包括:
写队列接口,适于接收消息生产者的写消息请求,所述写消息请求中包括待写入消息和所述待写入消息所属消息队列的第一标识;
读队列接口,适于接收消息消费者的读消息请求,所述读消息请求中包括待读取消息所属消息队列的第二标识;
消息处理器,适于根据消息队列标识与分布式存储系统中存储表的对应关系,将待写入消息存储到与所述第一标识对应的存储表中,以及,从与所述第二标识对应的存储表中顺序读取一条消息,将读取到的消息通过所述读队列接口发送到所述消息消费者。
2.如权利要求1所述的装置,其中,还包括:
对应关系建立器,适于建立消息队列标识与分布式存储系统中存储表的对应关系。
3.如权利要求1所述的装置,其中:
所述读消息请求中还包括是否删除读取到的消息的第三标识;
所述消息处理器还适于当根据所述第三标识确定需要删除读取到的消息,且从存储表中顺序读取到一条消息后,从所述存储表中删除读取到的消息。
4.如权利要求1所述的装置,其中,所述消息处理器通过调用所述分布式存储系统的写接口将消息写入存储表,通过调用所述分布式存储系统的扫描接口从存储表中顺序读取消息。
5.如权利要求1至4中任一项所述的装置,其中,所述分布式存储系统为Cassandra系统。
6.一种实现消息队列的方法,包括:
接收消息生产者的写消息请求,所述写消息请求中包括待写入消息和所述待写入消息所属消息队列的第一标识;
根据消息队列标识与分布式存储系统中存储表的对应关系,将待写入消息存储到与所述第一标识对应的存储表中;
接收消息消费者的读消息请求,所述读消息请求中包括待读取消息所属消息队列的第二标识;
根据消息队列标识与分布式存储系统中存储表的对应关系,从与所述第二标识对应的存储表中顺序读取一条消息,将读取到的消息发送到所述消息消费者。
7.如权利要求6所述的方法,其中,还包括:
建立消息队列标识与分布式存储系统中存储表的对应关系。
8.如权利要求6所述的方法,其中:
所述读消息请求中还包括是否删除读取到的消息的第三标识;
所述方法还包括:当根据所述第三标识确定需要删除读取到的消息,且从存储表中顺序读取到一条消息后,从所述存储表中删除读取到的消息。
9.如权利要求6所述的方法,其中,通过调用所述分布式存储系统的写接口将消息存储到存储表,通过调用所述分布式存储系统的扫描接口从存储表中顺序读取消息。
10.如权利要求6至9中任一项所述的方法,其中,所述分布式存储系统为Cassandra系统。
CN201310683683.0A 2013-12-13 2013-12-13 一种实现消息队列的方法及装置 Pending CN103761141A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310683683.0A CN103761141A (zh) 2013-12-13 2013-12-13 一种实现消息队列的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310683683.0A CN103761141A (zh) 2013-12-13 2013-12-13 一种实现消息队列的方法及装置

Publications (1)

Publication Number Publication Date
CN103761141A true CN103761141A (zh) 2014-04-30

Family

ID=50528385

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310683683.0A Pending CN103761141A (zh) 2013-12-13 2013-12-13 一种实现消息队列的方法及装置

Country Status (1)

Country Link
CN (1) CN103761141A (zh)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391662A (zh) * 2014-12-12 2015-03-04 北京奇虎科技有限公司 一种数据读写方法及装置
CN105955895A (zh) * 2016-04-20 2016-09-21 北京小米移动软件有限公司 分布式消息队列的逻辑控制方法和装置、数据处理设备
CN106293674A (zh) * 2015-06-08 2017-01-04 宏碁股份有限公司 自动增减数据消费者的方法以及使用该方法的装置
CN106487891A (zh) * 2016-10-11 2017-03-08 北京集奥聚合科技有限公司 一种基于kafka的处理消息的方法
CN106803841A (zh) * 2017-02-14 2017-06-06 北京奇虎科技有限公司 消息队列数据的读取方法、装置及分布式数据存储系统
CN107025142A (zh) * 2016-01-29 2017-08-08 华为技术有限公司 一种线程间消息传递方法、装置及电子设备
CN107391279A (zh) * 2017-07-31 2017-11-24 山东浪潮云服务信息科技有限公司 一种消息队列容器创建方法、装置及消息队列容器
CN107391672A (zh) * 2017-07-21 2017-11-24 中国联合网络通信集团有限公司 数据的读写方法及消息化的分布式文件系统
CN109885410A (zh) * 2019-01-09 2019-06-14 广州视源电子科技股份有限公司 消息发送方法、装置、计算机设备和存储介质
CN110225133A (zh) * 2019-06-20 2019-09-10 恒生电子股份有限公司 消息发送方法、节点、装置、系统及相关设备
CN110245028A (zh) * 2019-05-13 2019-09-17 平安科技(深圳)有限公司 IoT-MQ的消息存储方法、装置、计算机设备和存储介质
CN110351355A (zh) * 2019-07-04 2019-10-18 苏宁云计算有限公司 消息处理系统
CN110519343A (zh) * 2019-08-13 2019-11-29 创新奇智(北京)科技有限公司 一种基于日志的事件同步方法
CN111124299A (zh) * 2019-12-17 2020-05-08 网易传媒科技(北京)有限公司 数据存储管理方法、装置、设备、系统及存储介质
CN111158936A (zh) * 2017-06-15 2020-05-15 北京忆芯科技有限公司 队列交换信息的方法及系统
CN111552575A (zh) * 2019-12-31 2020-08-18 远景智能国际私人投资有限公司 基于消息队列的消息消费方法、装置及设备
CN111666145A (zh) * 2020-06-24 2020-09-15 深圳壹账通智能科技有限公司 消息队列的消息处理方法、系统和计算机设备
CN111679918A (zh) * 2019-03-11 2020-09-18 华为技术有限公司 一种消息传输方法及装置
CN112506623A (zh) * 2019-09-16 2021-03-16 瑞昱半导体股份有限公司 消息请求方法及其装置
CN112698965A (zh) * 2020-12-25 2021-04-23 百度在线网络技术(北京)有限公司 用于实现消息队列的系统、方法及消息调度系统
WO2021121370A1 (zh) * 2019-12-20 2021-06-24 北京金山云网络技术有限公司 用于消息队列的消息丢失检测方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0934734A (ja) * 1995-07-20 1997-02-07 Matsushita Electric Ind Co Ltd ジョブ実行装置
US20030041073A1 (en) * 2001-08-21 2003-02-27 Collier Josh D. Method and apparatus for reordering received messages for improved processing performance
CN102668516A (zh) * 2011-12-02 2012-09-12 华为技术有限公司 一种云消息服务中实现消息传递的方法和装置
CN102880507A (zh) * 2012-09-12 2013-01-16 科立讯通信股份有限公司 一种链式结构消息申请及分发的方法
CN102890631A (zh) * 2012-09-13 2013-01-23 新浪网技术(中国)有限公司 基于持久化消息队列传输消息的方法及消息传输装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0934734A (ja) * 1995-07-20 1997-02-07 Matsushita Electric Ind Co Ltd ジョブ実行装置
US20030041073A1 (en) * 2001-08-21 2003-02-27 Collier Josh D. Method and apparatus for reordering received messages for improved processing performance
CN102668516A (zh) * 2011-12-02 2012-09-12 华为技术有限公司 一种云消息服务中实现消息传递的方法和装置
CN102880507A (zh) * 2012-09-12 2013-01-16 科立讯通信股份有限公司 一种链式结构消息申请及分发的方法
CN102890631A (zh) * 2012-09-13 2013-01-23 新浪网技术(中国)有限公司 基于持久化消息队列传输消息的方法及消息传输装置

Cited By (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391662A (zh) * 2014-12-12 2015-03-04 北京奇虎科技有限公司 一种数据读写方法及装置
CN106293674A (zh) * 2015-06-08 2017-01-04 宏碁股份有限公司 自动增减数据消费者的方法以及使用该方法的装置
CN106293674B (zh) * 2015-06-08 2020-02-14 宏碁股份有限公司 自动增减数据消费者的方法以及使用该方法的装置
CN107025142A (zh) * 2016-01-29 2017-08-08 华为技术有限公司 一种线程间消息传递方法、装置及电子设备
CN105955895B (zh) * 2016-04-20 2019-04-12 北京小米移动软件有限公司 分布式消息队列的逻辑控制方法和装置、数据处理设备
CN105955895A (zh) * 2016-04-20 2016-09-21 北京小米移动软件有限公司 分布式消息队列的逻辑控制方法和装置、数据处理设备
CN106487891B (zh) * 2016-10-11 2019-05-21 北京集奥聚合科技有限公司 一种基于kafka的处理消息的方法
CN106487891A (zh) * 2016-10-11 2017-03-08 北京集奥聚合科技有限公司 一种基于kafka的处理消息的方法
CN106803841A (zh) * 2017-02-14 2017-06-06 北京奇虎科技有限公司 消息队列数据的读取方法、装置及分布式数据存储系统
CN106803841B (zh) * 2017-02-14 2020-04-10 北京奇虎科技有限公司 消息队列数据的读取方法、装置及分布式数据存储系统
CN111158936B (zh) * 2017-06-15 2024-04-09 北京忆芯科技有限公司 队列交换信息的方法及系统
CN111158936A (zh) * 2017-06-15 2020-05-15 北京忆芯科技有限公司 队列交换信息的方法及系统
CN107391672A (zh) * 2017-07-21 2017-11-24 中国联合网络通信集团有限公司 数据的读写方法及消息化的分布式文件系统
CN107391672B (zh) * 2017-07-21 2020-04-28 中国联合网络通信集团有限公司 数据的读写方法及消息化的分布式文件系统
CN107391279B (zh) * 2017-07-31 2020-08-25 浪潮云信息技术股份公司 一种消息队列容器创建方法、装置及消息队列容器
CN107391279A (zh) * 2017-07-31 2017-11-24 山东浪潮云服务信息科技有限公司 一种消息队列容器创建方法、装置及消息队列容器
CN109885410A (zh) * 2019-01-09 2019-06-14 广州视源电子科技股份有限公司 消息发送方法、装置、计算机设备和存储介质
CN111679918B (zh) * 2019-03-11 2024-04-26 华为云计算技术有限公司 一种消息传输方法及装置
CN111679918A (zh) * 2019-03-11 2020-09-18 华为技术有限公司 一种消息传输方法及装置
CN110245028B (zh) * 2019-05-13 2023-08-25 平安科技(深圳)有限公司 IoT-MQ的消息存储方法、装置、计算机设备和存储介质
CN110245028A (zh) * 2019-05-13 2019-09-17 平安科技(深圳)有限公司 IoT-MQ的消息存储方法、装置、计算机设备和存储介质
WO2020228287A1 (zh) * 2019-05-13 2020-11-19 平安科技(深圳)有限公司 IoT-MQ 的消息存储方法、装置、计算机设备和存储介质
CN110225133A (zh) * 2019-06-20 2019-09-10 恒生电子股份有限公司 消息发送方法、节点、装置、系统及相关设备
CN110225133B (zh) * 2019-06-20 2022-01-21 恒生电子股份有限公司 消息发送方法、节点、装置、系统及相关设备
CN110351355A (zh) * 2019-07-04 2019-10-18 苏宁云计算有限公司 消息处理系统
CN110351355B (zh) * 2019-07-04 2022-02-25 苏宁云计算有限公司 消息处理系统
CN110519343A (zh) * 2019-08-13 2019-11-29 创新奇智(北京)科技有限公司 一种基于日志的事件同步方法
CN110519343B (zh) * 2019-08-13 2020-12-04 创新奇智(北京)科技有限公司 一种基于日志的事件同步方法
CN112506623A (zh) * 2019-09-16 2021-03-16 瑞昱半导体股份有限公司 消息请求方法及其装置
CN111124299A (zh) * 2019-12-17 2020-05-08 网易传媒科技(北京)有限公司 数据存储管理方法、装置、设备、系统及存储介质
WO2021121370A1 (zh) * 2019-12-20 2021-06-24 北京金山云网络技术有限公司 用于消息队列的消息丢失检测方法和装置
CN111552575B (zh) * 2019-12-31 2023-09-12 远景智能国际私人投资有限公司 基于消息队列的消息消费方法、装置及设备
CN111552575A (zh) * 2019-12-31 2020-08-18 远景智能国际私人投资有限公司 基于消息队列的消息消费方法、装置及设备
CN111666145A (zh) * 2020-06-24 2020-09-15 深圳壹账通智能科技有限公司 消息队列的消息处理方法、系统和计算机设备
CN112698965B (zh) * 2020-12-25 2021-09-21 百度在线网络技术(北京)有限公司 用于实现消息队列的系统、方法及消息调度系统
CN112698965A (zh) * 2020-12-25 2021-04-23 百度在线网络技术(北京)有限公司 用于实现消息队列的系统、方法及消息调度系统

Similar Documents

Publication Publication Date Title
CN103761141A (zh) 一种实现消息队列的方法及装置
CN107395665B (zh) 一种区块链业务受理及业务共识方法及装置
US9665392B2 (en) System and method for supporting intra-node communication based on a shared memory queue
CN102043686B (zh) 一种内存数据库的容灾方法、备用服务器及系统
CN112000741B (zh) 内外网数据交换系统、方法、装置、计算机设备和介质
US10599535B2 (en) Restoring distributed shared memory data consistency within a recovery process from a cluster node failure
CN102955851B (zh) 一种数据库的切换方法和装置
CN102331993A (zh) 分布式数据库的数据迁移方法和分布式数据库迁移系统
CN111143093B (zh) 异步消息分布式处理方法、装置、设备及存储介质
CN102467408A (zh) 一种虚拟机数据的访问方法和设备
CN102938784A (zh) 应用于分布式存储系统中的数据存储方法和系统
CN102867035A (zh) 一种分布式文件系统集群高可用方法和装置
CN103152390A (zh) 分布式存储系统的节点配置方法、装置、节点及系统
CN103647850A (zh) 一种分布式版本控制系统的数据处理方法、设备及系统
CN105162879A (zh) 实现多机房数据一致性的方法、装置及系统
CN102142032A (zh) 一种分布式文件系统的数据读写方法及系统
JP2019527883A (ja) データベースのデータ変更要求処理方法及び装置
US20170083387A1 (en) High-performance computing framework for cloud computing environments
CN102968457A (zh) 数据库间切换方法和系统
CN105045789A (zh) 一种游戏服务器数据库缓存方法及系统
CN109542860B (zh) 基于hdfs的业务数据管理方法、终端设备
US9684668B1 (en) Systems and methods for performing lookups on distributed deduplicated data systems
CN106874068B (zh) 主机装置的容器运行加速方法及系统
CN111800519A (zh) 一种通讯系统、方法及装置
CN112202862A (zh) 一种基于kafka的集群数据以及文件的同步方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20140430