CN113301009B - 一种顺序消息的处理方法及装置 - Google Patents
一种顺序消息的处理方法及装置 Download PDFInfo
- Publication number
- CN113301009B CN113301009B CN202110201730.8A CN202110201730A CN113301009B CN 113301009 B CN113301009 B CN 113301009B CN 202110201730 A CN202110201730 A CN 202110201730A CN 113301009 B CN113301009 B CN 113301009B
- Authority
- CN
- China
- Prior art keywords
- message
- queue
- identification information
- queue group
- messages
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5681—Pre-fetching or pre-delivering data based on network characteristics
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种顺序消息的处理方法及装置,涉及计算机技术领域,本发明的主要目的在于提高消息中间件对顺序消息处理的高可用性。本发明主要的技术方案为:根据消息生产者所发送消息的第一标识信息,确定所述消息存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列;确定所述消息的第二标识信息,所述第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序;将含有所述第二标识信息的消息存储至所述目标队列组所含的队列中;在消费所述消息时,消息消费者将属于同一目标队列组的消息按照所述第二标识信息顺序读取。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种顺序消息的处理方法及装置。
背景技术
消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步远程调用RPC的主要手段之一。当今市面上有很多主流的消息中间件,如ActiveMQ,RabbitMQ,Kafka,RocketMQ等。消息中间件(MQ)可以视为分布式系统中一个子系统,关注于数据的发送与接收,其主要组成包括消息服务器(Broker),提供消息核心服务;消息生产者(Producer),负责生产消息传输给broker;消息消费者(Consumer),负责从broker获取消息并进行逻辑处理;主题(Topic),发布订阅模式下的消息统一汇集地,不同生产者向topic发送消息,由MQ服务器分发到不同的订阅者,实现消息的广播;队列(Queue),PTP(点对点)模式下,特定生产者向特定queue发送消息,消费者订阅特定的queue完成指定消息的接收;消息体(Message),根据不同通信协议定义的固定格式进行编码的数据包,来封装数据,实现消息的传输。
目前,消息中间件在处理顺序消息时,主要是将顺序消息存储在指定的单一队列中,依赖消息串行存储的特性和存储的时间顺序来得出消息的顺序。在发送消息时,消息会根据特定标识(如订单号)发送并存储至指定的队列中,在消费消息时,同一队列内的消息会按照存储顺序进行消费,为了确保消息的顺序,一个队列一般仅分布在一个消息服务器上,而对于全局顺序消息,由于只有一个队列,使其缺乏可拓展性。在消息服务器端故障导致队列不可用时,消息的发送与消费均无法正常工作,限制了消息中间件的高可用性。
发明内容
鉴于上述问题,本发明提出了一种顺序消息的处理方法及装置,主要目的在于提高消息中间件对顺序消息处理的高可用性。
为达到上述目的,本发明主要提供如下技术方案:
第一方面,本发明提供一种顺序消息的处理方法,具体包括:
根据消息生产者所发送消息的第一标识信息,确定所述消息存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列;
确定所述消息的第二标识信息,所述第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序;
将含有所述第二标识信息的消息存储至所述目标队列组所含的队列中;
在消费所述消息时,消息消费者将属于同一目标队列组的消息按照所述第二标识信息顺序读取。
第二方面,本发明提供一种顺序消息的处理装置,具体包括:
匹配单元,用于根据消息生产者所发送消息的第一标识信息,确定所述消息存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列;
确定单元,用于确定所述消息的第二标识信息,所述第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序;
存储单元,用于将含有所述第二标识信息的消息存储至所述匹配单元确定的目标队列组所含的队列中;
读取单元,用于在消费所述消息时,消息消费者将属于同一目标队列组的消息按照所述第二标识信息顺序读取。
第三方面,本发明提供一种顺序消息的处理方法,所述方法用于消息服务器,包括:
接收消息生产者发送的含有第一标识信息的消息,所述第一标识信息用于确定所述消息存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列;
确定所述消息的第二标识信息,所述第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序;
将含有所述第二标识信息的消息存储至所述目标队列组所含的队列中;
在消息消费者拉取消息的队列,从所述队列中输出具有第二标识信息的消息。
第四方面,本发明提供一种顺序消息的处理方法,所述方法用于消息消费端,包括:
向目标队列组所含的队列拉取消息,所述目标队列组含有多个分布在不同消息服务器中的队列;
根据所述消息中的第二标识信息确定消息的读取顺序,所述第二标识信息用于确定属于同一目标队列组的消息的读取顺序;
按照所述读取顺序读取所述消息。
第五方面,本发明提供一种顺序消息的处理方法,所述方法用于消息生产端,包括:
在消息中标记第一标识信息与第二标识信息,所述第一标识信息用于确定所述消息存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列,所述第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序;
将所述消息发送至消息服务器。
第六方面,本发明提供一种消息服务器,包括:
消息接收单元,用于接收消息生产者发送的含有第一标识信息的消息,所述第一标识信息用于确定所述消息存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列;
标识确定单元,用于确定所述消息的第二标识信息,所述第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序;
消息存储单元,用于将含有所述第二标识信息的消息存储至所述目标队列组所含的队列中;
消息输出单元,用于基于消息消费者拉取消息的队列,从所述队列中输出具有第二标识信息的消息。
第七方面,本发明提供一种消息消费端,包括:
消息拉取单元,用于向目标队列组所含的队列拉取消息,所述目标队列组含有多个分布在不同消息服务器中的队列;
消息排序单元,用于根据所述消息中的第二标识信息确定消息的读取顺序,所述第二标识信息用于确定属于同一目标队列组的消息的读取顺序;
消息读取单元,用于按照所述读取顺序读取所述消息。
第八方面,本发明提供一种消息生产端,包括:
信息标记单元,用于在消息中标记第一标识信息与第二标识信息,所述第一标识信息用于确定所述消息存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列,所述第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序;
消息发送单元,用于将所述消息发送至消息服务器。
第九方面,本发明提供一种顺序消息的处理系统,所述系统包括消息生产端,消息消费端以及消息服务器;其中,由不同消息服务器中的队列组成目标队列组;
所述消息生产端根据第一标识信息将消息发送至对应的目标队列组所含的队列中,执行如上述第五方面所述的顺序消息的处理方法;
所述消息消费端从消息服务器中拉取消息时,将同一目标队列组中的消息按照第二标识信息进行排序,以确定读取顺序,执行如上述第四方面所述的顺序消息的处理方法;
所述消息服务器执行如上述第三方面所述的顺序消息的处理方法。
另一方面,本发明提供一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述第一方面以及第三至第五方面所述的顺序消息的处理方法。
另一方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,其中,所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述第一方面以及第三至第五方面所述的顺序消息的处理方法。
借由上述技术方案,本发明提供的一种顺序消息的处理方法及装置,是在现有顺序消息处理方式的基础上,将多个分布在不同消息服务器中的队列以队列组的形式暴露给消息的生产者与消费者,由目标队列组根据第一标识信息将消息生产者发送的消息存储至该目标队列所属的队列中,在存储的同时,确定该消息中携带有第二标识信息,以便在消息消费者读取同一个目标队列组的消息时,能够根据该第二标识信息将该目标队列组中的消息进行排序输出。相对于现有的顺序消息处理方式,本发明实施例可以将同一属性的消息分别存储于位于不同消息服务器的队列内,并在读取时,也可以实现按顺序读取,实现顺序消息的读取要求,同时,由于将消息分散存储也解决了可用性不足的问题,提高了消息中间件的可拓展性,确保了顺序消息处理的高可用性以及可扩展性,为顺序消息的广泛使用提供了技术保证。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提出的一种顺序消息的处理方法的流程图;
图2示出了本发明实施例提出的另一种顺序消息的处理方法的流程图;
图3示出了本发明实施例提出的一种顺序消息的处理装置的组成框图;
图4示出了本发明实施例提出的另一种顺序消息的处理装置的组成框图;
图5示出了本发明实施例提出的一种用于消息服务器的顺序消息处理方法的流程图;
图6示出了本发明实施例提出的一种用于消息消费端的顺序消息处理方法的流程图;
图7示出了本发明实施例提出的一种用于消息发送端的顺序消息处理方法的流程图;
图8示出了本发明实施例提出的一种顺序消息的处理系统的组成框图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
本发明实施例提供的一种顺序消息的处理方法,该方法可以应用于具有消息处理需求的系统中,例如订单系统、库存系统等,以消息中间件的形式对顺序消息进行处理。其目的在于确保顺序消息的顺序处理前提下,提高消息发送与消费的可用性与可扩展性。为此,本发明实施例将以消息处理对象的不同分别以不同实施例加以说明。
第一实施例中,消息处理对象(即消息中间件)将以一组消息服务器的形式进行消息处理,在这一组消息服务器中,消息服务器既可以视为消息生产者,也可以是消息消费者,其对应的消息处理系统可以理解为消息生产者将消息在该系统的消息服务器中存储,所存储的消息服务器可以是消息生产者所在的消息服务器也可以是不同的消息服务器,而消息消费者在读取消息时可以从不同的消息服务器上拉取消息,并按顺序消费。而基于该组消息服务器所实施的顺序消息处理方法不限于由其中的一个或多个消息服务器执行,其具体步骤如图1所示,该方法包括:
步骤101、根据消息生产者所发送消息的第一标识信息,确定消息存储的目标队列组。
本步骤中的第一标识信息与现有顺序消息处理方式中的特定标识的作用相同,都是用于区分消息所对应的存储的位置,不同的是,现有方式中确定的是具体的队列,而本实施例中所确定的是目标队列组。而该目标队列组是由一组队列所构成的。即消息生产者所发送消息可以存储在一组队列中的任意一个或多个队列里。
需要说明的是,本步骤中的目标队列组中的多个队列是分布在不同消息服务器中的。也就是说,多个队列位于多个消息服务器中,而优选的分布是每个队列都位于一个单独的消息服务器中。如此,当一个消息服务器中出现问题时,所造成的影响最小。
步骤102、确定消息的第二标识信息。
其中,第二标识信息的作用是在消费消息时确定同一目标队列组中消息的读取顺序。而该第二标识信息可以是消息生成生产者在发送之前标记在该消息中的,也可以根据目标队列组接收的消息而实时生成的,比如时间戳,或者是按照预设顺序生成的顺序标识。具体的,本步骤是要识别该第二标识信息以属性信息的形式标记在消息中,若不存在第二标识信息,可以有两种处理方式,一种是将该消息退回给消息生产者,并告知其消息被退回的原因,另一种是在该消息中增加第二标识信息。
步骤103、将含有第二标识信息的消息存储至目标队列组所含的队列中。
由于目标队列组所得到的消息都是具有相同第一标识信息的,因此,这些消息不需要限定其所存储的具体队列。也就是说,目标队列组所含的多个队列的功能是相同的。所以,本步骤中,一个含有第二标识信息的消息可以存储在目标队列组所含的任意一个队列中,在基于目标队列组进行消息读取时,根据其所含有的第二标识信息与其他队列中的信息进行排序消费即可;也可以是存储在目标队列组所属的多个队列中互为备份,以防止其中的一个队列所在消息服务器故障导致该消息无法读取,不过,存储在多个队列中需要防止不同队列对该消息的重复读取,以确保该消息在目标队列组内的消息消费的唯一性。对于消息存储于多个队列中的防止重复读取的方式,本实施例不做具体限定。
步骤104、在消费消息时,消息消费者将属于同一目标队列组的消息按照第二标识信息顺序读取。
本步骤是基于目标队列组的消息读取过程,在消费目标队列组对应的消息时,消息消费者将从该目标队列组所含的队列中拉取消息,再将这些消息按照各自的第二标识信息进行排序,并根据该顺序对消息进行读取,从而实现顺序消息的读取操作。
通过上述实施例的说明,本发明实施例所提供的一种顺序消息的处理方法,是在现有顺序消息处理方式的基础上,增设消息队列组的概念,将多个分布在不同消息服务器中的队列以队列组的形式暴露给消息的生产者与消费者,基于同一目标队列组对应的第一标识信息接收消息生产者发送的消息,并将该消息存储至该目标队列组所含的队列中,而在存储的同时,还需要进一步确定该消息中是否存在第二标识信息,以便在消息消费者能够根据该第二标识信息将同一队列组中的消息进行排序输出,实现顺序消息的顺序消费。而相对于现有的顺序消息处理方式,本发明实施例基于消息队列组实现了将同一属性的消息分别存储于位于不同消息服务器的队列内,并在从多个队列中读取消息时,也可以实现按顺序读取,同时,由于消息的分散存储也解决了可用性不足的问题,提高了消息中间件的可拓展性,确保了顺序消息处理的高可用性以及可扩展性,为顺序消息的广泛使用提供了技术保证。
进一步的,针对图1所示的顺序消息的处理方法,以下实施例中,将针对消息的存储与读取步骤进行详细说明,其具体的过程如图2所示,包括:
步骤201、设置目标队列组。
本实施例中的目标队列组对应于现有顺序消息处理方法中的队列。在实际应用中,可以根据第一标识信息的数量对应设置队列组的数量,每个队列组对应设置一个第一标识信息。而每个队列组所对应的队列数量则可根据实际需求而自定义设置,比如,可以根据消息服务器的数量确定,当消息服务器有多个时,可以在每个消息服务器中都设置一个属于该目标队列组的队列,也可以在指定的多个消息服务器中分别设置一个或多个队列。需要说明的是,目标队列组中所含的队列数量至少为两个,其队列应尽可能地分布于不同的消息服务器中。
在设置目标队列组时,还需要为该目标队列组标记第一标识信息,以便根据消息生产者发送的消息中携带的第一标识信息可以确定该消息所要存储的目标队列组所含有的队列。
此外,本实施例中是基于目标队列组面向消息生产者与消息消费者对消息进行处理的,也就是说,消息生产者在发送消息时,消息消费者在读取消息时,都是以目标队列组作为处理的最小单元,而不是具体消息服务器中的队列。也就是说,本实施例中,消息的发送与消费所对应的最小粒度为目标队列组,基于目标队列组进一步对消息进行分布式的存储以及顺序读取。
步骤202、根据消息生产者所发送消息的第一标识信息,确定消息存储的目标队列组。
由于目标队列组是基于第一标识信息而设置的,因此,根据消息的第一标识信息可以确定其所对应的目标队列组。对应地,消息生产者在发送消息前,需要在该消息中标记第一标识信息。
步骤203、确定消息的第二标识信息。
本实例中确定第二标识信息的具体方式主要有两种:一种是由消息生产者在发送消息前,除了标记第一标识信息外,还标记第二标识信息,之后再发送该消息。而标记该第二标识信息需要根据预设策略生成该消息的第二标识信息,比如,对于同一个订单号的消息,其策略可以根据订单处理的流程顺序对所产生的消息标记第二标识信息,如货品发出为第一步,运输为第二步,收货为第三步,付款为第四步,如此,根据消息的内容消息生产者就可以为所发送的消息标记对应的第二标识信息。
另一种是基于目标队列组对消息进行第二标识信息的标记,当有多个消息生产者向目标队列组发送消息时,由于消息发送的顺序与任务执行过程具有对应关系,因此,可以根据消息发送的顺序为每个消息生成一个对应的第二标识信息,比如时间戳,并将该第二标识信息标记在消息中。也就是说,基于目标队列组所接收的消息可以按照指定的顺序来接收由不同消息生产者发送的消息,进而为消息标记第二标识信息。而该指定顺序不限定是时间顺序,也可以是自定义的顺序,比如订单优先级顺序,区域优先级顺序等等,对此,本实施例不做具体限定。
步骤204、将含有第二标识信息的消息存储至目标队列组所含的队列中。
本实施例中是将消息存储在目标队列组所含的任意一个队列中,确保在该目标队列组所含的所有队列中有且只有唯一的一个该消息。如此,在读取该消息时,就无需考虑对该消息的重复读取问题。
而对于将消息存储至一个队列的具体方式,除了随机选择一个队列的方式外,也可以按照预设策略确定具体队列。比如,按照队列所在消息服务器的计算负载确定队列,以协助实现消息服务器的负载均衡;还可以是在所有的队列中,设置一个主队列,将其作为消息的优先存储队列,即在该主队列所在消息服务器处于正常工作状态下,目标队列组会优先将消息存储在主队列中,为此,在具体实施时,就需要在存储消息之前,先判断目标队列组所含的多个队列中是否存在主队列,若存在,则向该主队列存储消息,反之,则可以将该消息随机存储至多个队列中的另一个队列。此种方式的好处在于,由于消息大多出自一个队列,在读取顺序消息时,需要进行排序合并的消息将减少,如此可以减少读取时的计算压力,提高消息的读取速度。
进一步的,在确定出消息所要存储的队列后,本实施例还可以对消息是否成功存储进行检测,以确保后续可以成功读取该消息。而对于消息是否成功存储至队列中,可以通过对该队列所在消息服务器的工作状态进行判断,即当该消息服务器报错或故障时,则确定该消息存储失败;或者是通过获取该消息存储的回执信息来确定是否成功存储。而在消息存储失败时,可以认为该队列所在的消息服务器存在故障,从而确定该消息服务器中的队列不适合再存储消息。此时,需要将该消息存储至目标队列组所含的另一队列中,同时,记录该队列的标识信息,或消息服务器的标识信息,根据标识信息来禁止后续消息向该队列存储。
由于消息服务器的故障并不是持久性的,即消息服务器的故障具有时限性,因此,消息服务器中队列也不需要在一个消息存储失败后就长期禁止写入消息。为此,本发明实施例的一个优选处理方式,是根据队列的标识信息禁止在预设时间段内向该队列存储消息。
由此,本实施例在向目标队列组所含的队列存储所述消息时,还可以判断该消息是否成功存储至目标队列组所含的第一队列中;若不成功,则将该消息存储至目标队列组所含的第二队列中,并记录第一队列的标识信息;根据该第一队列的标识信息禁止在预设时间段内向第一队列存储消息。
进一步的,在本实施例的另一优选处理方式中,当一个消息向目标队列组所含的所有可用队列都尝试存储并存储失败时,还可以判断该目标队列组中是否存在有被禁止存储的队列,若存在,则可以继续尝试向被禁止存储的队列发起存储尝试,若存储成功,则可以将该队列解禁,允许该队列继续存储消息;而若存储依然失败,则生成报警信息,以提示目标队列组所含的队列所在的消息服务器存在故障。可见,在本实施例的处理方式中,消息可以在存储失败时,向同一目标队列组所含的其他队列进行消息存储,并根据记录的标识信息阻止后续消息存储失败情况的发生,提高消息处理的可用性与稳定性。
步骤205、在消费消息时,消息消费者将属于同一目标队列组的消息按照第二标识信息顺序读取。
基于上一步骤的说明,由于消息被存储在目标队列组所含的一个队列中,在消费消息时,其具体过程如下:
消息消费者从目标队列组含有的队列中拉取具有第二标识信息的消息。当有且只有一个队列读取到消息时,则只需要按照该队列的读取顺序消费;而在多个队列都读取到消息时,则需要将读取到的多个消息进行排序。即根据第二标识信息,确定消息消费者读取消息的顺序。
进一步的,针对上述图2所示实施例中的步骤204-205,将消息存储在目标队列组所属的一个队列中的实施方式,本发明的另一实施例中,还可以是将消息存储在目标队列组所属的多个队列中,具体的:
在将消息存储在目标队列组所属的多个队列时,首先需要确定要存储至哪些队列,比如,可以在每个队列中都存储,也可以在指定的队列中存储,具体可根据实际需求而自定义设置。而在存储消息的同时,还需要将该消息的标识信息加入消息列表。该消息列表用于记录所有目标队列组所存储的消息,即消息生产者在向目标队列组发送一条消息时,消息列表就在对应的目标队列组中增加该消息的标识信息,而当消息消费者第一次读取该目标队列组中的该消息时,就对应地将该消息的标识信息从消息列表中删除。如此,利用该消息列表就可以避免,因消息在多个队列中存储而被多次读取的问题。为此,本实施例在从目标队列组所含的所有队列读取具有第二标识信息的消息后,需要判断每个消息在消息列表中是否还具有对应的标识信息,若具有,说明该消息还未被读取过,此时,将该消息确定为待排序消息,同时,在消息列表中删除该消息的标识信息;若不具有,说明该消息已被读取过,此时将删除该消息,不再对其进行排序。最后,将本次所有的待排序消息按照第二标识信息确定读取顺序。
进一步的,针对上述图1-2所示实施例的内容,本发明实施例对于目标队列组以及其中的队列,还可以根据对数据处理的吞吐量的需求而进行实时的动态缩扩容操作。针对该动态缩扩容操作,本发明实施例可以具体将其分为两种情况:
第一种,是对目标队列组中的队列数量进行扩容或缩容。
在需要调整目标队列组处理消息的效率时,可以通过增加或减少目标队列组中的队列数量实现,即对目标队列组中的队列扩容或缩容。
在对其进行扩容时,无需特别操作,可直接将所增加的队列加入目标队列组即可。
而在对其进行缩容时,则需要先对待缩容的队列进行禁写操作,即不再向该队列中写入消息;之后,在等待该待缩容的队列中的所有消息全部输出后,即该队列中的消息为空时,禁读该待缩容的队列;将待缩容的队列从目标队列组中删除,完成对目标队列组中的队列数量的缩容操作。
第二种,是对队列组的数量进行扩容或缩容。
在需要对消息进行重新分类处理时,就需要通过对队列组数量的增加与减少来实现,即对队列组的数量进行扩容或缩容。
在对队列组的数量进行扩容时,为了确保消息消费的顺序,需要在当前时刻先对新增队列组所含的队列进行禁读操作,即消息消费者仅从原有队列组的队列进行消息的读取;此时,在原有队列组的队列中的消息输出后,增加该新增队列组并解除对其的禁读操作,即在下一时刻的读取时,消息消费者将根据含有新增队列组的数量来读取队列消息。
在对队列组的数量进行缩容时,其与上一种情况中队列数量的缩容过程类似,需要对待缩容队列组所含的队列进行禁写操作;在原有队列组的队列中的消息输出后,对待缩容队列组所含的队列进行禁读操作,并删除该待缩容队列组,完成对队列组的缩容操作。
进一步的,作为对上述图1、2所示顺序消息的处理方法的实现,本发明实施例提供了一种顺序消息的处理装置,该装置主要目的在于提高消息中间件对顺序消息处理的高可用性以及可扩展性。为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。该装置如图3所示,具体包括:
匹配单元31,用于根据消息生产者所发送消息的第一标识信息,确定所述消息存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列;
确定单元32,用于确定所述消息的第二标识信息,所述第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序;
存储单元33,用于将含有所述确定单元32确定的第二标识信息的消息存储至所述匹配单元31确定的目标队列组所含的队列中;
读取单元34,用于在消费所述消息时,消息消费者将属于同一目标队列组的消息按照所述确定单元32确定的第二标识信息顺序读取。
进一步的,所述装置还包括:由消息生产者在消息中标记第一标识信息与第二标识信息,并发送所述消息;
确定单元32具体用于,识别所述消息中标记的第二标识信息。
进一步的,所述确定单元32还用于,当所述消息中未标记第二标识信息时,则根据预设策略为所述消息标记第二标识信息。
进一步的,如图4所示,所述装置还包括:
设置单元35,用于设置目标队列组,为所述目标队列组确定与所述第一标识信息对应的标识信息,所述目标队列组用于面向消息生产者与消息消费者提供顺序消息的发送与获取服务。
进一步的,如图4所示,所述存储单元33包括;
判断模块331,用于判断所述目标队列组所含的多个队列中是否具有主队列,所述主队列为预置优先存储消息的队列;
存储模块332,用于若所述判断模块331确定存在主队列,则将所述消息存储至主队列;反之,则将所述消息随机存储至多个队列中的一个队列。
进一步的,如图4所示,所述存储单元33还包括:
检测模块333,用于判断所述消息是否成功存储至所述目标队列组所含的第一队列中;
转存模块334,用于在检测模块333确定消息存储不成功时,将所述消息存储至目标队列组所含的第二队列中,记录所述第一队列的标识信息;
处理模块335,用于根据所述转存模块334记录的第一队列的标识信息禁止在预设时间段内向所述第一队列存储消息。
进一步的,所述转存模块334还用于:在所述消息向目标队列组中可存储消息的队列存储失败时,向被禁止存储消息的队列存储所述消息;若被禁止存储消息的队列存储所述消息成功,则允许所述队列继续存储消息;若被禁止存储消息的队列存储所述消息失败,则生成报警信息。
进一步的,如图4所示,所述读取单元34具体用于:
消息消费者从目标队列组含有的队列中拉取具有第二标识信息的消息;
根据所述第二标识信息对所述消息排序,并根据所述排序顺序读取所述消息。
进一步的,如图4所示,所述装置还包括:缩扩容单元36,用于对目标队列组中的队列数量进行扩容或缩容;和/或,对队列组的数量进行扩容或缩容。
进一步的,所述缩扩容单元36在对目标队列组中的队列数量进行缩容时,具体用于:对待缩容的队列进行禁写操作;在所述待缩容的队列中的消息输出后,禁读所述待缩容的队列;将所述待缩容的队列从目标队列组中删除。
进一步的,所述缩扩容单元36在对队列组的数量进行扩容时,具体用于:对新增队列组所含的队列进行禁读操作;在原有队列组的队列中的消息输出后,增加所述新增队列组并解除所述禁读操作;
所述缩扩容单元36在对队列组的数量进行缩容时,具体用于:对待缩容队列组所含的队列进行禁写操作;在原有队列组的队列中的消息输出后,对待缩容队列组所属的队列进行禁读操作,并删除所述待缩容队列组。
第二实施例中,是将第一实施例中的消息处理对象以其实现功能进行明确划分后的实施例。具体的,是将第一实施例中的多个消息服务器按照其功能而划分为多个执行主体,即用于存储消息的消息服务器,以及消息生产端、消息消费端,该消息生产端与消息消费端可以是任意的一个消息服务器,可以是实际应用中的客户端。因此,本实施例将主要通过消息服务器,以及消息生产端、消息消费端三方分别说明顺序消息的处理方法:
首先,说明应用于消息服务器的顺序消息处理方法,其具体步骤如图5所示,包括:
步骤301、接收消息生产者发送的含有第一标识信息的消息。
其中,第一标识信息用于确定所述消息存储的目标队列组,该目标队列组含有多个分布在不同消息服务器中的队列。
步骤302、确定消息的第二标识信息。
其中,第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序。
具体的,本步骤在确定消息的第二标识信息时,可以通过解析该消息的内容来判断该消息中是否含有第二标识信息;若不含有,则根据预设策略为该消息标记第二标识信息。标记的具体的方式在上述图2所示实施例的步骤203中进行了说明,此处再赘述。
步骤303、将含有第二标识信息的消息存储至目标队列组所含的队列中。
具体的,消息服务器中设置有多个队列,不同的队列可以属于不同的队列组,当消息服务器接收到一条消息时,将根据该消息的第一标识信息确定本地是否具有与该第一标识信息所对应的目标队列组所含的队列,若含有,继续执行后续步骤,反之,则将该消息发送至目标队列组所含的队列所在的消息服务器。
进一步的,在向队列存储消息时,还需要判断目标队列组中是否设置有主队列,该主队列为预置优先存储消息的队列。
当目标队列组中设置有主队列时,将该消息存储至主队列对应的目标消息服务器,本步骤中,该目标消息服务器为本地服务器时,则直接将该消息存储至对应的队列中,而当该目标消息服务器不为本地服务器时,则需要将该消息发送至主队列对应的目标消息服务器中,由目标消息服务器进一步存储该消息。
当目标队列组中未设置主队列时,则将所述消息随机存储至多个队列中的一个队列对应的目标消息服务器。其中,优选存储至本地服务器的队列中。
此外,本实施例中在将消息存储至本地的第一队列时,还可以进一步判断该消息是否成功存储至第一队列中,若未成功存储,则将消息存储至目标队列组所含的第二队列中,即将消息发送至第二队列所在的消息服务器中进行存储,同时记录本地服务器的标识信息,从而实现在预设时间段内停止向本地服务器中存储消息。
进一步的,当本地服务器中的队列被禁止存储消息时,若消息向目标队列组中可存储消息的队列均存储失败时,还可以向被禁止的本地服务器中的队列存储消息。若消息成功存储,说明本地服务器故障已排除,将允许向本地服务器中的队列继续存储消息;若消息存储失败,则向消息生产者反馈消息发送失败的提示信息。
该步骤的具体实现方式可以参考图2所示的步骤204中的具体方式,此处不再赘述。
步骤304、基于消息消费者拉取消息的队列,从队列中输出具有第二标识信息的消息。
以上图3所示的各步骤为单个消息服务器处理顺序消息时的具体步骤,其中,关于多个服务器之间的消息转发、存储步骤本实施例不再详细说明。
其次,本实施例中,针对消息消费端,即消息消费者读取消息时的具体过程以一个目标队列组为例说明,其具体步骤如图6所示,包括:
步骤401、向目标队列组所含的队列拉取消息。
其中,当队列为多个,其分布有不同的消息服务器中时,就需要分别向多个消息服务器同时拉取消息。如此,将得到来自不同消息服务器的多条消息,对于顺序消息,就需要进一步确定这些消息的读取顺序。
步骤402、根据消息中的第二标识信息确定消息的读取顺序。
根据上述实施例的说明可知,消息在存储至队列中时,需要确保该消息中具有第二标识信息,该第二标识信息主要用于确定属于同一目标队列组的消息的读取顺序。
步骤403、按照读取顺序读取消息。
基于上述图6所示实施例的步骤可知,本实施例中的消息消费端可以根据所拉取的消息,按照目标队列组对消息进行分类,并在同一个目标队列组将来自于不同消息服务器的消息进行排序读取。
最后,针对本实例中的消息发送端,其对消息的处理方法如图7所示,包括:
步骤501、在消息中标记第一标识信息与第二标识信息。
其中,第一标识信息用于确定所述消息对应存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列。第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序。
对于第二标识信息的生成方式可以参考图2所示实施例中步骤203中的内容,此处不再赘述。
步骤502、将消息发送至消息服务器。
其中,所发送的消息服务器不限定是目标队列组所含队列对应的消息服务器,可以是分布式消息服务器系统的任意一个服务器节点。
通过上述步骤可知,本实施例中的消息发送端主要是针对消息生产者所要发送的消息进行预处理,标记第一标识信息与第二标识信息。以便将含有第二标识信息的消息存储至目标队列组中任意队列所在的消息服务器中。
综合上述图5-7所示的顺序消息的处理方法,本实施例还提出一种顺序消息的处理系统,如图8所示,该系统包括消息生产端61,消息消费端62以及消息服务器63。
其中,由不同消息服务器63中的队列组成目标队列组,例如,队列1、队列3组成一个队列组,队列2与队列4组成另一个队列组。
所述消息生产端61根据第一标识信息将消息发送至对应的目标队列组所含的队列中,其执行上述图7所述的顺序消息的处理方法;所述消息消费端62从消息服务器63中拉取消息时,将同一目标队列组中的消息按照第二标识信息进行排序,以确定读取顺序,其执行上述图6所述的顺序消息的处理方法;所述消息服务器63执行上述图5所述的顺序消息的处理方法。
对应于上述图8所示的顺序消息的处理系统,本发明实施例还提出了一种消息服务器、消息消费端以及消息生产端。
具体的,所述消息服务器用于接收消息生产者发送的消息,并将其存储,以供消息消费者读取,其包括:
消息接收单元,用于接收消息生产者发送的含有第一标识信息的消息,所述第一标识信息用于确定所述消息存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列;
标识确定单元,用于确定所述消息的第二标识信息,所述第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序;
消息存储单元,用于将含有所述第二标识信息的消息存储至所述目标队列组所含的队列中;
消息输出单元,用于基于消息消费者拉取消息的队列,从所述队列中输出具有第二标识信息的消息。
所述消息消费端,用于消息消费者从多个消息服务器中拉取消息,并将同一队列组的消息顺序读取,其包括:
消息拉取单元,用于向目标队列组所含的队列拉取消息,所述目标队列组含有多个分布在不同消息服务器中的队列;
消息排序单元,用于根据所述消息中的第二标识信息确定消息的读取顺序,所述第二标识信息用于确定属于同一目标队列组的消息的读取顺序;
消息读取单元,用于按照所述读取顺序读取所述消息。
所述消息生产端,用于消息生产者将消息进行处理后发送至消息服务器,其包括:
信息标记单元,用于在消息中标记第一标识信息与第二标识信息,所述第一标识信息用于确定所述消息存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列,所述第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序;
消息发送单元,用于将所述消息发送至消息服务器。
另外,本发明实施例还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述图1-2、5-7所示的任意一个实施例提供的顺序消息的处理方法。
另外,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,其中,所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述图1-2、5-7所示的任意一个实施例所述的顺序消息的处理方法。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的较佳实施方式。
此外,存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程顺序消息的处理设备的处理器以产生一个机器,使得通过计算机或其他可编程顺序消息的处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程顺序消息的处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程顺序消息的处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (26)
1.一种顺序消息的处理方法,所述方法包括:
根据消息生产者所发送消息的第一标识信息,确定所述消息存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列;
确定所述消息的第二标识信息,所述第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序;
将含有所述第二标识信息的消息存储至所述目标队列组所含的队列中;
在消费所述消息时,消息消费者将属于同一目标队列组的消息按照所述第二标识信息顺序读取。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
由消息生产者在消息中标记第一标识信息与第二标识信息,并发送所述消息;
所述确定所述消息的第二标识信息,包括:
识别所述消息中标记的第二标识信息。
3.根据权利要求1所述的方法,其特征在于,所述确定所述消息的第二标识信息,包括:
当所述消息中未标记第二标识信息时,则根据预设策略为所述消息标记第二标识信息。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
设置目标队列组,为所述目标队列组确定与所述第一标识信息对应的标识信息,所述目标队列组用于面向消息生产者与消息消费者提供顺序消息的发送与获取服务。
5.根据权利要求1所述的方法,其特征在于,将含有第二标识信息的消息存储至所述目标队列组所含的队列中,包括;
判断所述目标队列组所含的多个队列中是否具有主队列,所述主队列为预置优先存储消息的队列;
若存在,则将所述消息存储至主队列;
若不存在,则将所述消息随机存储至多个队列中的一个队列。
6.根据权利要求1所述的方法,其特征在于,在向目标队列组所含的队列存储所述消息时,所述方法还包括:
判断所述消息是否成功存储至所述目标队列组所含的第一队列中;
若不成功,则将所述消息存储至目标队列组所含的第二队列中,记录所述第一队列的标识信息;
根据所述第一队列的标识信息禁止在预设时间段内向所述第一队列存储消息。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在所述消息向目标队列组中可存储消息的队列存储失败时,向被禁止存储消息的队列存储所述消息;
若被禁止存储消息的队列存储所述消息成功,则允许所述队列继续存储消息;
若被禁止存储消息的队列存储所述消息失败,则生成报警信息。
8.根据权利要求1所述的方法,其特征在于,消息消费者将属于同一目标队列组的消息按照所述第二标识信息顺序读取,包括:
消息消费者从目标队列组含有的队列中拉取具有第二标识信息的消息;
根据所述第二标识信息对所述消息排序,并根据所述排序顺序读取所述消息。
9.根据权利要求1-8中任一项所述的方法,其特征在于,所述方法还包括:
对目标队列组中的队列数量进行扩容或缩容;和/或
对队列组的数量进行扩容或缩容。
10.根据权利要求9所述的方法,其特征在于,对目标队列组中的队列数量进行缩容,包括:
对待缩容的队列进行禁写操作;
在所述待缩容的队列中的消息输出后,禁读所述待缩容的队列;
将所述待缩容的队列从目标队列组中删除。
11.根据权利要求9所述的方法,其特征在于,对队列组的数量进行扩容,包括:
对新增队列组所含的队列进行禁读操作;
在原有队列组的队列中的消息输出后,增加所述新增队列组并解除所述禁读操作;
对队列组的数量进行缩容,包括:
对待缩容队列组所含的队列进行禁写操作;
在原有队列组的队列中的消息输出后,对待缩容队列组所属的队列进行禁读操作,并删除所述待缩容队列组。
12.一种顺序消息的处理装置,所述装置包括:
匹配单元,用于根据消息生产者所发送消息的第一标识信息,确定所述消息存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列;
确定单元,用于确定所述消息的第二标识信息,所述第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序;
存储单元,用于将含有所述第二标识信息的消息存储至所述匹配单元确定的目标队列组所含的队列中;
读取单元,用于在消费所述消息时,消息消费者将属于同一目标队列组的消息按照所述第二标识信息顺序读取。
13.一种顺序消息的处理方法,所述方法用于消息服务器,包括:
接收消息生产者发送的含有第一标识信息的消息,所述第一标识信息用于确定所述消息存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列;
确定所述消息的第二标识信息,所述第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序;
将含有所述第二标识信息的消息存储至所述目标队列组所含的队列中;
基于消息消费者拉取消息的队列,从所述队列中输出具有第二标识信息的消息。
14.根据权利要求13所述的方法,其特征在于,确定所述消息的第二标识信息,包括:
判断所述消息中是否含有第二标识信息;
若不含有,则根据预设策略为所述消息标记第二标识信息。
15.根据权利要求13所述的方法,其特征在于,将含有所述第二标识信息的消息存储至所述目标队列组所含的队列中,包括:
根据所述第一标识信息对应的目标队列组确定所述消息服务器中是否具有所述目标队列组所含的目标队列;
若具有,则将所述消息存储至所述消息服务器的目标队列中。
16.根据权利要求13所述的方法,其特征在于,将含有所述第二标识信息的消息存储至所述目标队列组所含的队列中,包括:
当所述目标队列组中设置有主队列时,将所述消息存储至所述主队列对应的目标消息服务器,所述主队列为预置优先存储消息的队列;
当所述目标队列组中未设置主队列时,则将所述消息随机存储至多个队列中的一个队列对应的目标消息服务器。
17.根据权利要求13所述的方法,其特征在于,在向目标队列组所含的队列存储所述消息时,所述方法还包括;
判断所述消息是否成功存储至所述目标队列组所含的第一队列中;
若不成功,则将所述消息存储至目标队列组所含的第二队列中,记录所述第一队列的标识信息;
根据所述第一队列的标识信息禁止在预设时间段内向所述第一队列存储消息。
18.根据权利要求17所述的方法,其特征在于,所述方法还包括:
在所述消息向目标队列组中可存储消息的队列存储失败时,向被禁止存储消息的队列存储所述消息;
若被禁止存储消息的队列存储所述消息成功,则允许所述队列继续存储消息;
若被禁止存储消息的队列存储所述消息失败,则向消息生产者反馈消息发送失败的提示信息。
19.一种顺序消息的处理方法,所述方法用于消息消费端,包括:
向目标队列组所含的队列拉取消息,所述目标队列组含有多个分布在不同消息服务器中的队列,所述目标队列组为消息服务器根据消息生产者所发送消息的第一标识信息,确定的用于存储所述消息的队列组;
根据所述消息中的第二标识信息确定消息的读取顺序,所述第二标识信息用于确定属于同一目标队列组的消息的读取顺序;
按照所述读取顺序读取所述消息。
20.一种顺序消息的处理方法,所述方法用于消息生产端,包括:
在消息中标记第一标识信息与第二标识信息,所述第一标识信息用于确定所述消息存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列,所述第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序;
将所述消息发送至消息服务器。
21.一种消息服务器,包括:
消息接收单元,用于接收消息生产者发送的含有第一标识信息的消息,所述第一标识信息用于确定所述消息存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列;
标识确定单元,用于确定所述消息的第二标识信息,所述第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序;
消息存储单元,用于将含有所述第二标识信息的消息存储至所述目标队列组所含的队列中;
消息输出单元,用于基于消息消费者拉取消息的队列,从所述队列中输出具有第二标识信息的消息。
22.一种消息消费端,包括:
消息拉取单元,用于向目标队列组所含的队列拉取消息,所述目标队列组含有多个分布在不同消息服务器中的队列,所述目标队列组为消息服务器根据消息生产者所发送消息的第一标识信息,确定的用于存储所述消息的队列组;
消息排序单元,用于根据所述消息中的第二标识信息确定消息的读取顺序,所述第二标识信息用于确定属于同一目标队列组的消息的读取顺序;
消息读取单元,用于按照所述读取顺序读取所述消息。
23.一种消息生产端,包括:
信息标记单元,用于在消息中标记第一标识信息与第二标识信息,所述第一标识信息用于确定所述消息存储的目标队列组,所述目标队列组含有多个分布在不同消息服务器中的队列,所述第二标识信息用于在消费消息时确定同一目标队列组中消息的读取顺序;
消息发送单元,用于将所述消息发送至消息服务器。
24.一种顺序消息的处理系统,所述系统包括消息生产端,消息消费端以及消息服务器;其中,由不同消息服务器中的队列组成目标队列组;
所述消息生产端根据第一标识信息将消息发送至对应的目标队列组所含的队列中,执行如权利要求20所述的顺序消息的处理方法;
所述消息消费端从消息服务器中拉取消息时,将同一目标队列组中的消息按照第二标识信息进行排序,以确定读取顺序,执行如权利要求19所述的顺序消息的处理方法;
所述消息服务器执行如权利要求13-18中任一项所述的顺序消息的处理方法。
25.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1-11、13-20中任意一项所述的顺序消息的处理方法。
26.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,其中,所述计算机程序运行时控制所述计算机可读存储介质所在设备执行权利要求1-11、13-20中任意一项所述的顺序消息的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110201730.8A CN113301009B (zh) | 2021-02-23 | 2021-02-23 | 一种顺序消息的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110201730.8A CN113301009B (zh) | 2021-02-23 | 2021-02-23 | 一种顺序消息的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113301009A CN113301009A (zh) | 2021-08-24 |
CN113301009B true CN113301009B (zh) | 2023-06-23 |
Family
ID=77319048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110201730.8A Active CN113301009B (zh) | 2021-02-23 | 2021-02-23 | 一种顺序消息的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113301009B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114281572A (zh) * | 2021-12-28 | 2022-04-05 | 重庆允成互联网科技有限公司 | 一种跨服务业务生命周期管理方法及系统 |
CN115629891A (zh) * | 2022-11-04 | 2023-01-20 | 苏州阿基米德网络科技有限公司 | 一种顺序消息多队列传输方法、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110032459A (zh) * | 2019-04-22 | 2019-07-19 | 深圳乐信软件技术有限公司 | 消息队列配置方法、装置、计算机设备及存储介质 |
CN110351203A (zh) * | 2019-07-12 | 2019-10-18 | 苏州亿歌网络科技有限公司 | 一种消息处理方法、装置、系统、服务器及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9654408B2 (en) * | 2013-11-06 | 2017-05-16 | Amazon Technologies, Inc. | Strict queue ordering in a distributed system |
CN105282245B (zh) * | 2015-09-29 | 2019-03-08 | 努比亚技术有限公司 | 跨服务器消息推送系统及方法 |
CN107580033B (zh) * | 2017-08-24 | 2020-12-25 | 创新先进技术有限公司 | 负载信息处理方法和装置、消息处理方法和装置、服务器 |
CN109885410B (zh) * | 2019-01-09 | 2021-04-13 | 广州视源电子科技股份有限公司 | 消息发送方法、装置、计算机设备和存储介质 |
US11064022B2 (en) * | 2019-01-29 | 2021-07-13 | Verizon Patent And Licensing Inc. | Messaging system failover |
CN111782360B (zh) * | 2020-06-28 | 2023-08-11 | 中国工商银行股份有限公司 | 分布式任务调度方法及装置 |
-
2021
- 2021-02-23 CN CN202110201730.8A patent/CN113301009B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110032459A (zh) * | 2019-04-22 | 2019-07-19 | 深圳乐信软件技术有限公司 | 消息队列配置方法、装置、计算机设备及存储介质 |
CN110351203A (zh) * | 2019-07-12 | 2019-10-18 | 苏州亿歌网络科技有限公司 | 一种消息处理方法、装置、系统、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113301009A (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113301009B (zh) | 一种顺序消息的处理方法及装置 | |
CN106817295B (zh) | 一种消息处理装置和方法 | |
US8195757B2 (en) | Method, apparatus and computer program for controlling retention of publications | |
CN109871225B (zh) | 电子控制单元ecu升级方法及ecu | |
CN110231995B (zh) | 一种基于Actor模型的任务调度方法、装置及存储介质 | |
CN104537076A (zh) | 一种文件读写方法及装置 | |
CN111181784B (zh) | 一种网口状态管理方法、状态机引擎装置、设备及介质 | |
CN104092719A (zh) | 文件传输方法、装置及分布式集群文件系统 | |
CN111708619B (zh) | 基于消息队列和数据库的分布式事务处理方法及系统 | |
CN111416823A (zh) | 一种数据传输方法和装置 | |
CN110071968B (zh) | 一种基于区块链的消息存储方法及装置 | |
CN111460038A (zh) | 一种数据准实时同步方法及装置 | |
CN110704212B (zh) | 一种消息处理方法及装置 | |
CN112689248A (zh) | 一种消息处理方法及系统 | |
CN105450679A (zh) | 进行数据云存储的方法及系统 | |
CN112527519A (zh) | 一种高性能本地缓存方法、系统、设备及介质 | |
CN107395765B (zh) | 一种分布式文件系统、网络通信方法、平台及其创建方法 | |
CN114827158A (zh) | 一种配置信息的加载方法、系统及服务器 | |
CN114827156A (zh) | 消息调度的方法、装置、设备及存储介质 | |
CN112769928A (zh) | 一种基于业务场景的信息交互方法及设备 | |
CN112486478B (zh) | 一种基于领域驱动的事件处理方法及设备 | |
CN110888941B (zh) | 用于业务场景内的连带关系事件的处理方法及处理系统 | |
CN113285855B (zh) | 服务器监控方法及系统 | |
CN117370047A (zh) | 一种数据传输方法及系统 | |
CN117041235A (zh) | 一种基于Web应用的实时通信方法、设备及介质 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40057555 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |