CN112153148A - 基于消息接收端的消息堆积处理方法及装置 - Google Patents
基于消息接收端的消息堆积处理方法及装置 Download PDFInfo
- Publication number
- CN112153148A CN112153148A CN202011031756.4A CN202011031756A CN112153148A CN 112153148 A CN112153148 A CN 112153148A CN 202011031756 A CN202011031756 A CN 202011031756A CN 112153148 A CN112153148 A CN 112153148A
- Authority
- CN
- China
- Prior art keywords
- message
- buffer queue
- receiving end
- storage space
- processing method
- 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
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/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
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)
Abstract
本发明提供了一种基于消息接收端的消息堆积处理方法及装置,基于消息接收端的消息堆积处理方法包括:将由消息中间件发送的消息存储至一预设的存储空间中,以生成消息缓存队列;当消息接收速度处于正常范围时,读取所述消息缓存队列中的消息。本发明是在消息接收端应用需要长时间停机维护或者应用异常无法及时接收消息的情况下所提出的一种应急的消息处理方法,该方法对服务端、消息发送端均不会产生影响。接收端应用恢复后可正常消费消息,且不会产生丢失,减轻了消息服务端的资源消耗。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种基于消息接收端的消息堆积处理方法及装置。
背景技术
现有技术中,消息中间件一般是用于系统间异步通讯的中间件,关注数据的发送和接收,利用高效可靠的异步消息传递机制集成分布式系统。主要用于解决应用解耦,异步消息,流量削锋等问题。消息中间件一般是CS模式架构,分为发送客户端、消息服务代理、接收客户端几个部分。目前主流的消息中间件有:Kafka、Rocketmq、Qpid、Rabbitmq等。运行流程大体为:消息发送方调用消息中间件发送API,将消息发送到消息中心服务端即:消息服务代理。消息的接收方调用消息中间件的接收API,从消息服务代理获取消息。消息发送方发送消息后继续其他逻辑,不会等到接收方接收到消息。消息什么时候被收到,发送方式感知不到的,这种通讯方式称之为异步通讯。由于发送方无法感知接收方是否正常接收消息,所以一般需要消息服务代理有一定的手段去保证:在接收方不能正常接收或者接收速度较慢的情况下,整个系统能够正常运行。即在发送速度大于接收速度的情况下,需要有方法去保证系统正常。
现有的消息中间都是在消息服务端-消息服务代理设定流控机制保证正常运行。现有的应急手段一般包括:拒绝发送方发送、流入磁盘、删除最早接收的消息等,各种应急手段的缺点具体如下:
拒绝发送方发送:此种方法会导致发送方系统发送消息失败。发送方系统需要尝试重发,短时间内大量消息发送失败。
流入磁盘:在内存不足以接收消息时,将最近接收的消息存储到磁盘上。这种方式消息仍然是堆积在消息服务端,在多种消息同时在一个服务端时,效率会相互影响。
删除最早接收的消息:同样会导致消息丢失。
另外,以上方法均是在服务端采取的措施,一般消息服务端都是服务于几组消息场景,由于机器的资源是共享的,服务端采取流控手段必然对全体的消息场景都会产生一定的影响。
发明内容
根据本发明所提供的基于消息接收端的消息堆积处理方法及装置,应用于消息产生积压的背景下,本发明既不影响正常的消息消费,也不会产生消息丢失,并且减轻了消息服务端的资源消耗。
为了实现上述目的,本发明提供了一种基于消息接收端的消息堆积处理方法,包括:
将由消息中间件发送的消息存储至一预设的存储空间中,以生成消息缓存队列;
当消息接收速度处于正常范围时,读取所述消息缓存队列中的消息。
优选地,基于消息接收端的消息堆积处理方法还包括:
将所述存储空间的应用程序编程接口与所述消息中间件的应用程序编程接口进行封装。
优选地,所述将由消息中间件发送的消息存储至一预设的存储空间中,以生成消息缓存队列,包括:
计算消息头长度以及消息体长度;
按照时间对消息进行排序;
根据排序后的消息、所述消息头长度、所述消息体长度以及预设的消息缓存队列大小生成所述消息缓存队列。
优选地,所述读取所述消息缓存队列中的消息包括:
进行循环操作:
从所述存储空间的应用程序编程接口读取所述消息缓存队列内的消息;
生成所述消息缓存队列的锁文件;
间隔预设时间后,打开所述锁文件;
直至所述消息缓存队列内的消息数量为0。
优选地,设置所述存储空间的步骤包括:
根据消息接入标识符、消息存放目录、消息是否开启安全解密、消息数量及/或接受消息的时间长度开辟所述存储空间;
所述消息接入标识符用于在所述存储空间中标识消息的类型、地址以及实例号。
第二方面,本发明提供一种基于消息接收端的消息堆积处理装置,该装置包括:
缓存队列生成单元,用于将由消息中间件发送的消息存储至一预设的存储空间中,以生成消息缓存队列;
消息读取单元,用于读取所述消息缓存队列中的消息。
优选地,基于消息接收端的消息堆积处理装置还包括:接口封装单元,用于将所述存储空间的应用程序编程接口与所述消息中间件的应用程序编程接口进行封装。
优选地,所述缓存队列生成单元包括:
消息长度计算模块,用于计算消息头长度以及消息体长度;
消息排序模块,用于按照时间对消息进行排序;
缓存队列生成模块,用于根据排序后的消息、所述消息头长度、所述消息体长度以及预设的消息缓存队列大小生成所述消息缓存队列。
优选地,所述消息读取单元具体用于进行循环操作:
从所述存储空间的应用程序编程接口读取所述消息缓存队列内的消息;
生成所述消息缓存队列的锁文件;
间隔预设时间后,打开所述锁文件;
直至所述消息缓存队列内的消息数量为0。
优选地,基于消息接收端的消息堆积处理装置还包括:存储空间设置单元,用于设置所述存储空间;
所述存储空间设置单元具体用于根据消息接入标识符、消息存放目录、消息是否开启安全解密、消息数量及/或接受消息的时间长度开辟所述存储空间;
所述消息接入标识符用于在所述存储空间中标识消息的类型、地址以及实例号。
第三方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现基于消息接收端的消息堆积处理方法的步骤。
第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现基于消息接收端的消息堆积处理方法的步骤。
从上述描述可知,本发明实施例提供的基于消息接收端的消息堆积处理方法及装置,首先将由消息中间件发送的消息存储至一预设的存储空间中,以生成消息缓存队列;当消息接收速度处于正常范围时,读取消息缓存队列中的消息。本发明是在消息接收端应用需要长时间停机维护或者应用异常无法及时接收消息的情况下所提出的一种应急的消息处理方法,该方法对服务端、消息发送端均不会产生影响。接收端应用恢复后可正常消费消息,且不会产生丢失,减轻了消息服务端的资源消耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的基于消息接收端的消息堆积处理系统的第一种结构示意图;
图2为本申请实施例的基于消息接收端的消息堆积处理系统的第二种结构示意图;
图3为本发明实施例中提供的基于消息接收端的消息堆积处理方法的流程示意图一;
图4为本发明实施例中提供的基于消息接收端的消息堆积处理方法的流程示意图二;
图5为本发明的实施例中步骤100的流程示意图;
图6为本发明的实施例中步骤200的流程示意图;
图7为本发明的实施例中设置存储空间的流程示意图;
图8为本发明的实施例中消息处理流向图;
图9为本发明实施例中针基于消息接收端的消息堆积处理装置的结构示意图一;
图10为本发明实施例中针基于消息接收端的消息堆积处理装置的结构示意图二;
图11为本发明实施例中缓存队列生成单元的结构示意图;
图12为本发明实施例中针基于消息接收端的消息堆积处理装置的结构示意图三;
图13为本发明的实施例中的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请提供一基于消息接收端的消息堆积处理系统,参见图1,该系统可以为一种服务器A1,该服务器A1可以与多个消息接收端B1通信连接,服务器A1还可以与多个数据库分别通信连接,或者如图2所示,这些数据库也可以之间设置在服务器A1中。其中,消息接收端B1用于接收客户的消息。服务器A1在收取消息之后,对该消息发送至对应的子系统,并对该消息进行处理。
可以理解的是,客户端C1可以包括智能手机、平板电子设备、网络机顶盒、便携式计算机、台式电脑、个人数字助理(PDA)、车载设备、智能穿戴设备等。其中,智能穿戴设备可以包括智能眼镜、智能手表、智能手环等。
在实际应用中,进行基于消息接收端的消息堆积处理的部分可以在如上述内容的服务器A1侧执行,即,如图1或图2所示的架构,也可以所有的操作都在客户端C1设备中完成。具体可以根据客户端设备的处理能力,以及用户使用场景的限制等进行选择。本申请对此不作限定。若所有的操作都在客户端设备中完成,客户端设备还可以包括处理器,用于进行对基于消息接收端的消息堆积处理结果的处理等操作。
上述的客户端C1设备可以具有通信模块(即通信单元),可以与远程的服务器进行通信连接,实现与服务器的数据传输。服务器可以包括基于消息接收端的消息堆积处理一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与基于消息接收端的消息堆积处理服务器有通信链接的第三方服务器平台的服务器。服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的服务器结构。
服务器与客户端设备之间可以使用任何合适的网络协议进行通信,包括在本申请提交日尚未开发出的网络协议。网络协议例如可以包括TCP/IP协议、UDP/IP协议、HTTP协议、HTTPS协议等。当然,网络协议例如还可以包括在上述协议之上使用的RPC协议(RemoteProcedure Call Protocol,远程过程调用协议)、REST协议(Representational StateTransfer,表述性状态转移协议)等。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
本发明的实施例提供一种基于消息接收端的消息堆积处理方法的具体实施方式,参见图3,该方法具体包括如下内容:
步骤100:将由消息中间件发送的消息存储至一预设的存储空间中,以生成消息缓存队列。
由背景技术可知,现有的消息处理均是在消息服务端-消息服务代理设定流控机制保证正常运行。步骤100通过在消息接收端额外部署一个应急接收程序,该程序接收消息后将消息存储到可配置目录下的文件中,接收程序可以配置接收消息数量或者接收消息的时间长度。该程序只接收消息,不进行消息的处理。
步骤200:当消息接收速度处于正常范围时,读取所述消息缓存队列中的消息。
需要说明的是,本申请是针对消息接收端接收消息处于非正常范围状态下的应急方法,故当消息接收端的接收速度处于正常范围时,再读取消息缓存队列中的消息。
从上述描述可知,本发明实施例提供的基于消息接收端的消息堆积处理方法,首先将由消息中间件发送的消息存储至一预设的存储空间中,以生成消息缓存队列;当消息接收速度处于正常范围时,读取消息缓存队列中的消息。本发明是在消息接收端应用需要长时间停机维护或者应用异常无法及时接收消息的情况下所提出的一种应急的消息处理方法,该方法对服务端、消息发送端均不会产生影响。接收端应用恢复后可正常消费消息,且不会产生丢失,减轻了消息服务端的资源消耗。
一实施例中,参见图4,基于消息接收端的消息堆积处理方法还包括:
步骤300:将所述存储空间的应用程序编程接口与所述消息中间件的应用程序编程接口进行封装。
可以理解的是,这里的封装是指隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。另外步骤300可以取得的技术效果如下:提高了数据的安全性:系统外部人员不能够通过变量名、属性名的方式来修改某个私有的成员属性。操作简单:封装后,多个调用者在使用的时候,只需调用方法即可,调用者不需要再进行判断。隐藏实现:实现过程对调用者是不可见的,调用者只需调用方法即可,不必知道具体实现过程。
一实施例中,参见图5,步骤100进一步包括:
步骤101:计算消息头长度以及消息体长度;
步骤102:按照时间对消息进行排序;
步骤103:根据排序后的消息、所述消息头长度、所述消息体长度以及预设的消息缓存队列大小生成所述消息缓存队列。
一实施例中,参见图6,步骤200进一步包括:
步骤201:进行循环操作:
从所述存储空间的应用程序编程接口读取所述消息缓存队列内的消息;
生成所述消息缓存队列的锁文件;
间隔预设时间后,打开所述锁文件;
直至所述消息缓存队列内的消息数量为0。
可以理解的是,这里的锁文件的作用是:当一个进程读取消息的某部分时,其他进程就无法修改同一文件区域。具体地,读取消息缓存队列中的消息之后,为防止消息读取异常,必须设置一锁文件,在进行下一次读取之前,再将该锁文件打开。
一实施例中,参见图7,设置所述存储空间的步骤包括:
步骤701:根据消息接入标识符、消息存放目录、消息是否开启安全解密、消息数量及/或接受消息的时间长度开辟所述存储空间。
所述消息接入标识符用于在所述存储空间中标识消息的类型、地址以及实例号。
为进一步地说明本方案,本申请提供基于消息接收端的消息堆积处理方法的具体应用实例,该具体应用实例具体包括如下内容,参见图8。
S1:生成消息缓存队列。
具体地,当消息服务端产生消息积压时,通过运维监控系统可以发出监控告警。接收方启动应急接收程序,应急接收程序需要输入的参数有:Csid、消息存放目录、是否开启安全解密、接收数量。接收的消息放到以${Csid}_${yyyyMMdd}.dat.${index}格式的文件中,其中${Csid}代表输入的Csid值,${yyyyMMdd}代表当前的系统日期格式为:年月日分别占4位、2位、2位。${index}代表顺序值,从1开始。同时消息的消息头长度和消息体长度存入对应文件名为${Csid}_${yyyyMMdd}.idx.${index}格式的文件中,其中${Csid}、${yyyyMMdd}、${index}与消息文件名中的值相同。消息头和消息体长度值为固定位数,各占8位。具体地,应急程序执行流程为:
(1)对输入的参数进行解析,若缺少其中任何一项,则报错并打印帮助信息后退出。
(2)分别获取“消息存放目录”下,以“${Csid}_${yyyyMMdd}.idx”和“${Csid}_${yyyyMMdd}.dat”开始的文件列表,从两种文件中分别找到${index}的最大值,将两者中的最大值加1作为新的存放消息文件的${index}。
(3)分别创建文件名为${Csid}_${yyyyMMdd}.idx.${index}、${Csid}_${yyyyMMdd}.dat.${index}、${Csid}_${yyyyMMdd}.lck.${index}的文件。
(4)调用消息接收API接收消息,对接收到的消息计算头和体的长度,分别写入inx文件和dat文件。
(5)判断已经接收的消息数量是否已经达到输入的接收数量,如果已经达到,则关闭相关文件资源并删除lck文件后退出程序。如果未达到输入的接收数量,则判断是否已经达到单个文件最大写入条数的倍数,如果已经达到则判断当前接收数量是否已经达到预设值,如果达到转到步骤(2),如果未达到则继续执行步骤(4)。
S2:读取消息缓存队列中的消息。
应用程序需要在启动参数中配置对应的消息存放目录参数。应用在调用消息API接收消息前,先调用文件消息接收API,若返回消息为空,则继续调用接收API进行消息接收,如果返回消息不为空则进行正常的消息处理。具体地,消息接收API流程如下:
(1)查看是否存在当前csid对应的消息缓存队列,如果存在,则判断缓存队列是否为空,如果不为空,则读取一条消息返回。如果不存在当前csid对应的消息缓存队列,或者存在缓存队列,但是缓存队列为空,则执行步骤(2)。
(2)获取消息存储目录下文件名以对应csid开始的dat文件列表,按照时间顺序排序,对于排序后的文件列表,将文件名中的dat替换为lck,生成锁文件。如果锁文件生成成功,则执行(3),否则继续遍历文件列表。如果没有锁文件生成成功,则直接返回空消息。
(3)生成此csid对应的消息缓存队列。
(4)新建接收线程,并启动接收线程。
(5)主线程启动(2)中线程后sleep 10s,然后查看是否有当前Csid已经读取文件的缓存队列,如果有,则直接读取一条消息返回。如果没有则继续等待。
(6)对于步骤(2)中的新建线程执行如下:
①打开步骤(2)中获取到的锁文件,同时以锁文件的文件名为参照,获取对应的dat文件名和idx文件名,打开dat文件和idx文件。
②读取idx文件8位,获取消息头长度,再次读取idx文件8位,获取消息体长度。以获取到的消息体长度读取dat文件中对应长度的消息头,以取到的消息体长度读取dat文件中对应长度的消息体。将消息头和消息体组成消息,存放到对应csid的消息缓存队列中。
③判断是否读取到文件尾,如果是则关闭相关文件资源,退出。如果否,则继续执行步骤②。
本具体应用实例中所提供的基于消息接收端的消息堆积处理方法的,可保证在消息产生积压时,加快消息的接收速度,保证消息服务端的正常稳定。接收方调用消息中间件的API接收消息,API与接收方应用位于同一进程中。并额外部署一个应急接收程序,该程序接收消息后将消息存储到可配置目录下的文件中,接收程序可以配置接收消息数量或者接收消息的时间长度。该程序只接收消息,不进行消息的处理。应用程序启动时,配置与应急接收程序相同的目录。接着,对消息中间件API进行封装,在接收消息时首先查看配置目录下是否有消息文件产生,如果有消息文件,则解析消息文件,将文件中的一条消息返回给应用,并记录当前读的文件位置,下一次应用调用API读取消息时,从记录文件位置读取下一条消息,如果整个文件读取完毕,则删除该文件。如果该目录下没有消息文件,则继续连接到消息服务端进行消息接收。该方法对服务端、消息发送端均不会产生影响。接收端应用恢复后可正常消费消息,且不会产生丢失,减轻了消息服务端的资源消耗。
基于同一发明构思,本申请实施例还提供了基于消息接收端的消息堆积处理装置,可以用于实现上述实施例所描述的方法,如下面的实施例。由于基于消息接收端的消息堆积处理装置解决问题的原理与基于消息接收端的消息堆积处理方法相似,因此基于消息接收端的消息堆积处理装置的实施可以参见基于消息接收端的消息堆积处理方法实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本发明的实施例提供一种能够实现基于消息接收端的消息堆积处理方法的基于消息接收端的消息堆积处理装置的具体实施方式,参见图9,基于消息接收端的消息堆积处理装置具体包括如下内容:
缓存队列生成单元10,用于将由消息中间件发送的消息存储至一预设的存储空间中,以生成消息缓存队列;
消息读取单元20,用于读取所述消息缓存队列中的消息。
优选地,参见图10,基于消息接收端的消息堆积处理装置还包括:接口封装单元30,用于将所述存储空间的应用程序编程接口与所述消息中间件的应用程序编程接口进行封装。
优选地,参见图11,所述缓存队列生成单元10包括:
消息长度计算模块101,用于计算消息头长度以及消息体长度;
消息排序模块102,用于按照时间对消息进行排序;
缓存队列生成模块103,用于根据排序后的消息、所述消息头长度、所述消息体长度以及预设的消息缓存队列大小生成所述消息缓存队列。
优选地,所述消息读取单元20具体用于进行循环操作:
从所述存储空间的应用程序编程接口读取所述消息缓存队列内的消息;
生成所述消息缓存队列的锁文件;
间隔预设时间后,打开所述锁文件;
直至所述消息缓存队列内的消息数量为0。
优选地,参见图12,基于消息接收端的消息堆积处理装置还包括:存储空间设置单元40,用于设置所述存储空间;
所述存储空间设置单元40具体用于根据消息接入标识符、消息存放目录、消息是否开启安全解密、消息数量及/或接受消息的时间长度开辟所述存储空间;
所述消息接入标识符用于在所述存储空间中标识消息的类型、地址以及实例号。
从上述描述可知,本发明实施例提供的基于消息接收端的消息堆积处理装置,首先将由消息中间件发送的消息存储至一预设的存储空间中,以生成消息缓存队列;当消息接收速度处于正常范围时,读取消息缓存队列中的消息。本发明是在消息接收端应用需要长时间停机维护或者应用异常无法及时接收消息的情况下所提出的一种应急的消息处理方法,该方法对服务端、消息发送端均不会产生影响。接收端应用恢复后可正常消费消息,且不会产生丢失,减轻了消息服务端的资源消耗。
本申请的实施例还提供能够实现上述实施例中的基于消息接收端的消息堆积处理方法中全部步骤的一种电子设备的具体实施方式,参见图13,电子设备具体包括如下内容:
处理器(processor)1201、存储器(memory)1202、通信接口(CommunicationsInterface)1203和总线1204;
其中,处理器1201、存储器1202、通信接口1203通过总线1204完成相互间的通信;通信接口1203用于实现服务器端设备、消息接收设备以及用户端设备等相关设备之间的信息传输。
处理器1201用于调用存储器1202中的计算机程序,处理器执行计算机程序时实现上述实施例中的基于消息接收端的消息堆积处理方法中的全部步骤,例如,处理器执行计算机程序时实现下述步骤:
步骤100:将由消息中间件发送的消息存储至一预设的存储空间中,以生成消息缓存队列;
步骤200:当消息接收速度处于正常范围时,读取所述消息缓存队列中的消息。
本申请的实施例还提供能够实现上述实施例中的基于消息接收端的消息堆积处理方法中全部步骤的一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的基于消息接收端的消息堆积处理方法的全部步骤,例如,处理器执行计算机程序时实现下述步骤:
步骤100:将由消息中间件发送的消息存储至一预设的存储空间中,以生成消息缓存队列;
步骤200:当消息接收速度处于正常范围时,读取所述消息缓存队列中的消息。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
虽然本申请提供了如实施例或流程图的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种基于消息接收端的消息堆积处理方法,其特征在于,包括:
将由消息中间件发送的消息存储至一预设的存储空间中,以生成消息缓存队列;
当消息接收速度处于正常范围时,读取所述消息缓存队列中的消息。
2.根据权利要求1所述的基于消息接收端的消息堆积处理方法,其特征在于,还包括:
将所述存储空间的应用程序编程接口与所述消息中间件的应用程序编程接口进行封装。
3.根据权利要求2所述的基于消息接收端的消息堆积处理方法,其特征在于,所述将由消息中间件发送的消息存储至一预设的存储空间中,以生成消息缓存队列,包括:
计算消息头长度以及消息体长度;
按照时间对消息进行排序;
根据排序后的消息、所述消息头长度、所述消息体长度以及预设的消息缓存队列大小生成所述消息缓存队列。
4.根据权利要求2所述的基于消息接收端的消息堆积处理方法,其特征在于,所述读取所述消息缓存队列中的消息包括:
进行循环操作:
从所述存储空间的应用程序编程接口读取所述消息缓存队列内的消息;
生成所述消息缓存队列的锁文件;
间隔预设时间后,打开所述锁文件;
直至所述消息缓存队列内的消息数量为0。
5.根据权利要求1至4任一项所述的基于消息接收端的消息堆积处理方法,其特征在于,设置所述存储空间的步骤包括:
根据消息接入标识符、消息存放目录、消息是否开启安全解密、消息数量及/或接受消息的时间长度开辟所述存储空间;
所述消息接入标识符用于在所述存储空间中标识消息的类型、地址以及实例号。
6.一种基于消息接收端的消息堆积处理装置,其特征在于,包括:
缓存队列生成单元,用于将由消息中间件发送的消息存储至一预设的存储空间中,以生成消息缓存队列;
消息读取单元,用于读取所述消息缓存队列中的消息。
7.根据权利要求6所述的基于消息接收端的消息堆积处理装置,其特征在于,还包括:接口封装单元,用于将所述存储空间的应用程序编程接口与所述消息中间件的应用程序编程接口进行封装。
8.根据权利要求7所述的基于消息接收端的消息堆积处理装置,其特征在于,所述缓存队列生成单元包括:
消息长度计算模块,用于计算消息头长度以及消息体长度;
消息排序模块,用于按照时间对消息进行排序;
缓存队列生成模块,用于根据排序后的消息、所述消息头长度、所述消息体长度以及预设的消息缓存队列大小生成所述消息缓存队列。
9.根据权利要求7所述的基于消息接收端的消息堆积处理装置,其特征在于,所述消息读取单元具体用于进行循环操作:
从所述存储空间的应用程序编程接口读取所述消息缓存队列内的消息;
生成所述消息缓存队列的锁文件;
间隔预设时间后,打开所述锁文件;
直至所述消息缓存队列内的消息数量为0。
10.根据权利要求6-9任一项所述的基于消息接收端的消息堆积处理装置,其特征在于,还包括:存储空间设置单元,用于设置所述存储空间;
所述存储空间设置单元具体用于根据消息接入标识符、消息存放目录、消息是否开启安全解密、消息数量及/或接受消息的时间长度开辟所述存储空间;
所述消息接入标识符用于在所述存储空间中标识消息的类型、地址以及实例号。
11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至5任一项所述基于消息接收端的消息堆积处理方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至5任一项所述基于消息接收端的消息堆积处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011031756.4A CN112153148A (zh) | 2020-09-27 | 2020-09-27 | 基于消息接收端的消息堆积处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011031756.4A CN112153148A (zh) | 2020-09-27 | 2020-09-27 | 基于消息接收端的消息堆积处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112153148A true CN112153148A (zh) | 2020-12-29 |
Family
ID=73894257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011031756.4A Pending CN112153148A (zh) | 2020-09-27 | 2020-09-27 | 基于消息接收端的消息堆积处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112153148A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115277848A (zh) * | 2022-07-29 | 2022-11-01 | 中国银行股份有限公司 | 基于消息队列的消息处理方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103259683A (zh) * | 2013-05-16 | 2013-08-21 | 烽火通信科技股份有限公司 | 基于HTML5的Web网管系统二级缓存推送方法 |
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
CN106453482A (zh) * | 2016-08-05 | 2017-02-22 | 成都卡德智能科技有限公司 | 一种物联网中间件系统及物联网系统 |
CN106649496A (zh) * | 2016-10-10 | 2017-05-10 | 国信优易数据有限公司 | 一种政务数据采集共享系统与方法 |
-
2020
- 2020-09-27 CN CN202011031756.4A patent/CN112153148A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103259683A (zh) * | 2013-05-16 | 2013-08-21 | 烽火通信科技股份有限公司 | 基于HTML5的Web网管系统二级缓存推送方法 |
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
CN106453482A (zh) * | 2016-08-05 | 2017-02-22 | 成都卡德智能科技有限公司 | 一种物联网中间件系统及物联网系统 |
CN106649496A (zh) * | 2016-10-10 | 2017-05-10 | 国信优易数据有限公司 | 一种政务数据采集共享系统与方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115277848A (zh) * | 2022-07-29 | 2022-11-01 | 中国银行股份有限公司 | 基于消息队列的消息处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111756811B (zh) | 一种分布式系统的主动推送的方法、系统、设备及介质 | |
US10579595B2 (en) | Method and device for calling a distributed file system | |
CN107577578B (zh) | 统计nfs操作字时延的方法、装置、设备以及存储介质 | |
CN109788068B (zh) | 心跳状态信息上报方法、装置和设备及计算机存储介质 | |
CN104219316A (zh) | 一种分布式系统中的调用请求处理方法及装置 | |
US20170085512A1 (en) | Generating message envelopes for heterogeneous events | |
CN109873863B (zh) | 服务的异步调用方法和装置 | |
US20140214782A1 (en) | Distributed Storage Object Delete | |
CN110650164B (zh) | 文件的上传方法、装置、终端以及计算机存储介质 | |
CN111858007A (zh) | 一种基于消息中间件的任务调度方法方法和装置 | |
CN110457132B (zh) | 一种功能对象的创建方法、装置和终端设备 | |
CN112153148A (zh) | 基于消息接收端的消息堆积处理方法及装置 | |
CN112437001B (zh) | 保证消息可靠性投递与消费方法、装置 | |
CN111447136B (zh) | 消息推送方法、装置、计算机设备和存储介质 | |
CN111090818B (zh) | 资源管理方法、资源管理系统、服务器及计算机存储介质 | |
CN113098978B (zh) | 一种数据传输方法、装置及介质 | |
CN115455121A (zh) | 一种实时可靠的数据同步传输方法、设备及介质 | |
US20140298325A1 (en) | Secure and reliable mechanism to provide a single object instance in a clustered system | |
CN114897532A (zh) | 操作日志处理方法、系统、装置、设备和存储介质 | |
CN112748855B (zh) | 处理高并发数据请求的方法和装置 | |
CN113342836A (zh) | 同步数据处理方法、装置、计算机设备及存储介质 | |
CN113407629A (zh) | 数据同步的方法、装置、电子设备及存储介质 | |
CN113672488A (zh) | 日志文本处理方法及装置 | |
CN112612848A (zh) | 数据实时同步的方法及装置、系统、电子设备、存储介质 | |
CN112181677B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201229 |
|
RJ01 | Rejection of invention patent application after publication |