CN111538600B - 消息处理方法、装置、计算机设备及存储介质 - Google Patents
消息处理方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN111538600B CN111538600B CN202010115853.5A CN202010115853A CN111538600B CN 111538600 B CN111538600 B CN 111538600B CN 202010115853 A CN202010115853 A CN 202010115853A CN 111538600 B CN111538600 B CN 111538600B
- Authority
- CN
- China
- Prior art keywords
- message
- file
- target
- queue
- files
- 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
Classifications
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种消息处理方法、装置、计算机设备及存储介质,属于物联网技术领域。所述方法包括:接收消息生产者发送的第一消息;将第一消息存储至目标消息队列对应的消息文件中;获取目标消息队列对应的删除策略;根据所述删除策略,对目标消息队列对应的消息文件进行删除。本申请实施例提供的技术方案中,避免了因文件堆积而造成的文件占用空间太大的问题,节省消息中间件的存储空间,减少了消息中间件的处理开销,有效地避免了因清除缓存而造成的文件丢失,保证了消息消费者充分使用消息;删除策略可动态配置,提高了消息中间件进行文件删除时的灵活性和自由度。
Description
技术领域
本申请涉及物联网技术领域,特别涉及一种消息处理方法、装置、计算机设备及存储介质。
背景技术
目前,随着互联网技术的飞速发展,更多设备可以实现在任何时间、任何地点的人机物相通。
相关技术中,消息可以通过中间设备,在消息生产者和消息消费者之间进行传递。具体地,消息生产者在生成消息之后,向中间设备发送该消息,进一步地,中间设备将该消息存储在内存中,消息消费者可以从中间设备的内存中读取对应的消息。
然后,上述相关技术中,随着时间的增加,中间设备的内存中存储的消息越来越多,且中间设备不会自动对消息进行删除,占用的运行空间大,加大了中间设备的处理开销。
发明内容
本申请实施例提供了一种消息处理方法、装置、计算机设备及存储介质,可以自动删除中间设备中的消息,减少消息占用的运行空间。所述技术方案如下:
一方面,本申请实施例提供了一种消息处理方法,所述方法包括:
接收消息生产者发送的第一消息;
将所述第一消息存储至目标消息队列对应的消息文件中,所述消息文件持久化存储在存储介质中;
获取所述目标消息队列对应的删除策略,所述删除策略是可动态配置的用于控制所述目标消息队列对应的消息文件进行删除的条件;
根据所述删除策略,对所述目标消息队列对应的消息文件进行删除。
另一方面,本申请实施例提供了一种消息处理装置,所述装置包括:
消息接收模块,用于接收消息生产者发送的第一消息;
消息存储模块,用于将所述第一消息存储至目标消息队列对应的消息文件中,所述消息文件持久化存储在存储介质中;
策略获取模块,用于获取所述目标消息队列对应的删除策略,所述删除策略是可动态配置的用于控制所述目标消息队列对应的消息文件进行删除的条件;
文件删除模块,用于根据所述删除策略,对所述目标消息队列对应的消息文件进行删除。
再一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现上述消息处理方法。
又一方面,本申请实施例提供了一种计算机可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现上述消息处理方法。
还一方面,提供了一种计算机程序产品,当所述计算机程序产品在计算机设备上运行时,使得计算机设备执行上述消息处理方法。
本申请实施例提供的技术方案可以带来如下有益效果:
通过删除策略对目标消息队列中的消息文件进行删除,避免了因文件堆积而造成的文件占用空间太大的问题,节省消息中间件的存储空间,减少了消息中间件的处理开销;对消息进行持久化存储,有效地避免了因清除缓存而造成的文件丢失,保证了消息消费者充分使用消息;删除策略可动态配置,使得消息中间件可以根据实际情况调配删除策略,提高了消息中间件进行文件删除中时的灵活性和自由度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的消息处理系统的示意图;
图2是本申请一个实施例提供的消息处理方法的流程图;
图3示例性示出了一种延时存储消息的方法示意图;
图4示例性示出了一种消息存储后信息同步的方法示意图;
图5示例性示出了一种消息删除方法的示意图;
图6示例性示出了一种消息存储及消费方法的示意图;
图7是本申请一个实施例提供的消息处理装置的框图;
图8是本申请另一个实施例提供的消息处理装置的框图;
图9是本申请一个实施例提供的计算机设备的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
请参考图1,其示出了本申请一个实施例提供的消息处理系统的示意图。该消息处理系统可以包括:生产设备10、中间设备20和消费设备30。
生产设备10,即消息生产者,是指用于生成消息的设备。可选地,生产设备10在生成消息的同时,生成该消息对应的消息存储请求,并将该消息存储请求发送至中间设备20。其中,消息存储请求中可以包括上述消息、该消息对应的目标消息队列的指示信息以及该消息对应的延时信息。
中间设备20是指生产设备10和消费设备30的中转设备。其中,中间设备20中可以设置有消息中间件。可选地,中间设备20在接收上述消息存储请求之后,可以根据该消息存储请求中的目标消息队列的指示信息,确定该消息对应的持久化存储的目标消息队列,并根据该消息对应的延时信息确定该消息进行持久化存储的时间,之后,中间设备20可以通过消息中间件,根据上述目标消息队列的指示信息和上述延时信息对上述消息进行持久化存储,将该消息存储在消息文件中。需要说明的一点是,在本申请实施例中,中间设备20在将上述消息持久化之后,可以向上述目标消息队列对应的消费设备20主动发送对应的消息,也可以等待消费设备20主动向中间设备20发送消息获取请求,来获取对应的消息。
消费设备30,即消息消费者,是指使用上述消息的设备。可选地,消费设备30可以主动从中间设备20获取消息,也可以等待中间设备20主动推送对应的消息。本申请实施例中,消费设备30可以根据文件索引获取消息在中间设备20中的位置。其中,该文件索引可以由消费设备30生成。
可选地,上述生产设备10、中间设备20和消费设备30之间可以通过网络进行连接。
请参考图2,其示出了本申请一个实施例提供的消息处理方法的流程图。该方法可应用于图1所示消息处理系统的中间设备20中,如各步骤的执行主体可以是中间设备20中的消息中间件。该方法可以包括以下几个步骤(201~204):
步骤201,接收消息生产者发送的第一消息。
消息生产者是指用于生成消息的设备或计算机程序,也就是说,消息生产者可以是上述图1实施例中的生成设备10,也可以设置在该生产设备10中。第一消息是指上述消息生产者生成的某个消息,可选地,该第一消息中包括可用于消费的数据。
在一种可能实施例中,消息生产者在生成上述第一消息的同时,可以对该第一消息中的可用于消费的数据进行加密。在另一种可能的实施例中,消费生产者在生产上述第一消息的同时,可以对该第一消息进行加密。需要说明的一点是,消息生产者进行加密的方法可以根据不同的实际情况进行变化,例如,消息生产者可以对不同的消息采用不同的加密方法;或者,消息生产者可以对不同种类的消息采用不同的加密方法,对相同种类的消息采用相同的加密方法,其中,消息的种类可以根据消息的内容进行划分。
在本申请实施例中,消息生产者在生成第一消息的之后,可以根据该第一消息生成消息存储请求,并向消息中间件发送该消息存储请求,其中,该消息存储请求用于向消息中间件请求持久化存储对应的第一消息。
可选地,上述消息存储请求中包括上述第一消息、目标消息队列的指示信息和第一消息对应的延时信息。其中,目标消息队列是指消息中间件中第一消息的存储队列,消息中间件可以根据上述目标消息队列的指示信息,确定上述第一消息的存储队列为目标消息队列;第一消息对应的延时信息用于指示对所第一消息进行持久化存储的延迟时间,消息中间件可以根据该延时信息,确定上述第一消息进行持久化存储的延迟时间,并从接收到上述第一消息开始计时,在计时对应的时间达到上述延迟时间之后,对该第一消息进行持久化存储。在本申请实施例中,不同消息对应的延时信息可以不同,例如,不延时、延时1s、延时1min、延时10min等,本申请实施例对此不作限定。
在本申请实施例中,若第一消息对应的延时信息为不延时,则消息中间件在接收到上述第一消息后直接进行持久化存储;若第一消息对应的延时信息为延时,则消息中间件在接收到上述第一消息后,可以将该第一消息存储在临时文件中,当该第一消息在临时文件中的存储时间达到上述延时信息中的延迟时间之后,将该第一消息进行持久化存储,可选地,上述临时文件中各个消息的存储顺序,可以按照上述延迟时间从小到大存储。示例性地,结合参考图3,消息中间件在接收到消息存储请求之后,可以根据该消息存储请求判断对应的第一消息是否延时,若该第一消息延时,则将该第一消息存储在临时文件中,等到该第一消息的延时结束时,对该第一消息进行持久化存储;若第一消息不延时,则将该第一消息进行持久化存储。
可选地,在本申请实施例中,消息中间件可以设置安全阈值,该安全阈值是指消息中间件可接收的最大消息的大小,若上述第一消息的大小大于上述安全阈值,则消息中间件可以拒绝接收该第一消息。
步骤202,将第一消息存储至目标消息队列对应的消息文件中。
消息队列是指消息中间件中消息的存储队列,可选地,消息中间件可以根据消息的内容,对消息进行分类,并将相同种类的消息存储在同一消息队列中。消息文件是指消息的存储文件。在本申请实施例中,上述消息文件持久化存储在存储介质中,该存储介质是指可以持久保留消息的介质,如硬件磁盘。
在本申请实施例中,消息中间件在接收到上述第一消息之后,根据该第一消息对应的消息存储请求中的目标消息队列的指示信息,确定该第一消息对应的目标消息队列。在一种可能的实施例中,消息中间件中已存在上述目标消息队列,则消息中间件可以将该第一消息存储在该目标消息队列的消息文件中;在另一种可能的实时方式中,消息中间件中未存在上述目标消息队列,则消息中间件可以创建该目标消息队列,并将该第一消息存储在该目标消息队列的消息文件中。
可选地,上述第一消息可以存储在上述目标消息队列中已创建的消息文件中,也可以存储在上述目标消息队列中新的消息文件中,在一种可能的实施例中,上述目标消息队列中的已创建的消息文件未达到存储上限值,消息中间件可以将该第一消息存储至该已创建的消息文件中,其中,上述存储上限值是指目标消息队列中消息文件中可存储的消息最大值;在另一种可能的实施方式中,上述目标消息队列已创建的消息文件已达到存储上限值,消息中间件可以创建该目标消息队列对应的新的消息文件,并将所第一消息存储至该新的消息文件中。当然,消息中间件也可以根据上述第一消息的内容将该第一消息存储在特定的消息文件中,例如,消息中间件可以根据消息的重要程度,选择将对应的消息存储在重要消息文件或非重要消息文件中。
需要说明的一点是,在本申请实施例中,若消息生产者对上述第一消息或第一消息中的可用数据进行加密后发送至消息中间件,则消息中间件在对该第一消息进行持久化存储之前,需要将该第一消息或第一消息中的可用数据进行解密。可选地,同一消息队列中的消息的加密方式相同。
可选地,消息中间件在向将上述第一消息存储至目标消息队列的消息文件之后,可以向该目标消息队列对应的消息消费者发送第一信息,该第一信息用于提醒消息消费者使用该第一消息;对应的,消息中间件可以向消息生产者发送第二信息,该第二信息用于提醒消息生产者上述第一消息已完成持久化存储,进一步地,消息生产者可以继续向消息中间件发送第二消息。可选地,上述第一信息和第二信息中可以包括上述第一消息的存储位置,该存储位置是指上述第一消息存储在上述目标消息队列中的消息文件中的具体位置,如“文件1的第3行”;进一步地,消息消费者可以根据该第二信息,从上述存储位置获取上述第一消息。
示例性地,结合参考图4,消息中间件可以在创建上述目标消息队列之后,创建该目标消息队列对应的同步线程,进一步地,该同步线程可以记录该目标消息队列中的消息持久化进程和消息消费进程,当消息中间件将第一消息存储至目标消息队列的消息文件中之后,上述同步线程可以捕获到上述第一消息的存储完成信息和存储位置,进一步地,消息中间件可以向消息消费者发送第一信息,并向消息生产者发送第二信息,可选地,上述第一信息和第二信息中可以包括上述第一消息文件的存储位置。
需要说明的一点是,在本申请实施例中,上述目标消息队列对应的消息消费者可以是一个或多个。可选地,消息中间件在向将上述第一消息存储至消息文件中后,可以向上述目标消息队列对应的消息消费者主动发送上述第一消息;或者,消息中间件在向将上述第一消息存储至消息文件中后,在接收到上述目标消息队列对应的消息消费者发送的消息获取请求之后,可以向该消息消费者主动发送上述第一消息。其中,上述目标消息队列中的消息文件具有多端共享的功能,也就是说,该目标消息队列对应的消息消费者可以从同一消息文件中获取第一消息,避免了将消息文件多次复制来向多个消息消费者提供第一消息的步骤,减少了消息中间件的处理负担。
当然,在本申请实施例中,上述消息获取请求中可以包括消息消费规则。可选地,消息中间件在接收到上述消息获取请求之后,可以根据该消息获取请求中的消息消费规则,向消息消费者发送对应的消息。在一种可能的实施例中,上述消息消费规则中可以包括向前跳跃消费的指示信息。可选地,上述向前跳跃消费的指示信息中包括跳跃时间或跳跃消息数量。其中,跳跃时间是指消息消费者所需要消费的消息对应的接收时间,与上述第一消息的接收时间的差值;跳跃消息数量是指消息消费者所需要消费的消息对应的存储位置,与上述第一消息的存储位置之间的间隔存储空间中的消息数量。消息中间件可以根据上述向前跳跃消费的指示信息,向消息消费者发送消息文件中的消息,该消息的接收时间早于上述第一消息。
在另一种可能的实施例中,上述消息消费规则中包括向后跳跃消费的指示信息。可选地,上述向后跳跃消费的指示信息中包括跳跃消息数量。其中,向后跳跃消息数量是指消息消费者所需要消费的消息对应的存储位置,与上述第一消息的存储位置之间的间隔存储空间中的消息数量。消息中间件可以根据上述向后跳跃消费的指示信息,等待接收新的消息,并向消息消费者发送该新的消息。
需要说明的一点是,上述消息消费规则可以是根据上述目标消息队列所创建的可动态调整的消费规则,也可以是消息消费者根据实际情况确定的消费规则,本申请实施例对此不作限定。
另外,结合参考图5,对消息的存储及消费方法进行介绍。消息中间件在获取消息之后,可以将该消息存储在对应的目标消息队列的消息文件1中,其中,该消息文件1具有存储上限值,随着时间的增加,当该消息文件1达到存储上限之后,消息中间件可以将消息存储至消息文件2中,进一步地,当该消息文件2达到存储上限之后,消息中间件可以将消息存储至消息文件3中。另外,消息文件1中的消息由消息消费者1进行消费,消息文件2中的消息由消息消费者2和消息消费者3进行消费。
需要说明的一点是,在本申请实施例中,上述目标消息队列可以设置由对应的删除策略、加密方式、安全阈值和心跳检测,其中,上述加密方式包括解密算法,该解密算法与上述目标消息队列对应的加密算法相对应;上述心跳检测是指检测消息中间件与消息消费者之间的消息传输是否正常的方法,可选地,消息中间件可以定时向消息消费者发送检测信号,消息消费者在接收到上述检测信号之后,可以向消息中间件发送对应的反馈信号,进一步地,消息中间件通过该反馈信号确定消息传输正常。在一种可能的实施方式中,上述反馈信号中可以包括消息消费者已经使用过的消息的数量,若该数量与消息中间件中存储的消息数量之间的差值处于预设范围内,则确定消息传输正常;否则,确定消息传输有误。
步骤203,获取目标消息队列对应的删除策略。
删除策略是可动态配置的用于控制目标消息队列对应的消息文件进行删除的条件。可选地,该删除策略中可以包括上述目标消息中的消息文件的删除方法,以及判定上述目标消息队列进行文件删除的方法。在本申请实施例中,不同的消息队列对应有不同的删除策略。可选地,消息中间件在将上述第一消息存储至目标消息队列之后,可以获取该消息对列对应的删除策略。
需要说明的一点是,在本申请实施例中,上述删除策略是可动态调配的,也就是说,消息中间件可以在创建上述目标消息队列时,设置该目标消息队列的删除策略,也可以在确定上述目标消息队列之后,根据实际情况,对该删除策略进行调整变化。
步骤204,根据删除策略,对目标消息队列对应的消息文件进行删除。
在本申请实施例中,消息中间件在获取上述删除策略之后,可以根据该删除策略,对目标消息队列对应的消息文件进行删除。需要说明的一点是,消息中间件可以根据实际情况对目标消息队列中的设置不同的删除策略。在一种可能的实施方式中,上述删除策略可以是在消息文件的数量大于阈值时,删除该目标消息队列中的消息文件,其中,该阈值可以是10、20或30等,本申请实施例对此不作限定。
可选地,消息中间件在将上述第一消息存储至消息文件之后,可以获取上述目标消息队列中的消息文件的数量,若该数量大于阈值,则消息中间件可以根据上述删除策略对消息文件进行删除。需要说明的一点是,消息中间件也可以按照一定的时间间隔来获取上述消息文件的数量,并判断该数量是否大于阈值,其中,上述时间间隔可以是0.1s、1s、5s或1min等,本申请实施例对此不作限定。
当然,在其他可能的实施例中,上述删除策略还可以是在消息中间件接收到的上述目标消息队列对应的消息的数量超过目标值时,删除该目标消息队列中的消息文件。
综上所述,本申请实施例提供的技术方案中,通过删除策略对目标消息队列中的消息文件进行删除,避免了因文件堆积而造成的文件占用空间太大的问题,节省消息中间件的存储空间,减少了消息中间件的处理开销;对消息进行持久化存储,有效地避免了因清除缓存而造成的文件丢失,保证了消息消费者充分使用消息;删除策略可动态配置,使得消息中间件可以根据实际情况调配删除策略,提高了消息中间件进行文件删除中时的灵活性和自由度。
另外,通过设定消息文件的存储上限值,使得消息可存储在不同的文件中,便于消息中间件通过删除对应的文件来删除对应的消息,提高了消息的管理效率。
另外,设置消息对应的延时信息来延迟消息存储时间,避免了因多个消息同时发送而造成的存储失败,实现了消息生产者与消息中间件之间的多消息传递。
另外,在消息完成持久化存储之后,向消息消费者发送第一信息,向消息生产者发送第二信息,有利于提高消息消费者消费消息的速率,以及消息生产者发送消息的速率。
下面,以删除策略是在消息文件的数量大于阈值时,删除该目标消息队列中的消息文件为例,对文件删除方法进行介绍。
在示例性实施例中,上述步骤204包括以下几个步骤:
1、获取目标消息队列对应的消息文件的编号。
编号是指消息文件的标识符号。在本申请实施例中,消息中间件可以按照上述消息文件生成的时间顺序确定该消息文件的编号,可选地,同一消息队列中的消息文件具有不同的编号,不同消息队列中的消息文件可以具有相同的编号。需要说明的一点是,上述消息文件的编号的大小与该消息文件的创建时间呈正比。
2、根据编号,确定目标消息队列对应的消息文件的数量。
可选地,在对上述目标消息队列中的消息文件进行删除时,消息中间件可以获取该目标消息队列中的消息文件的编号,并根据该编号,确定消息文件的数量,可选地,消息中间件可以获取上述目标消息队列中的具有不同编号的文件的数量,进而确定该目标消息队列中的消息文件的数量。
3、响应于数量大于阈值,确定待删除文件数量。
待删除文件数量是指上述目标消息队列中需要删除的文件的数量。可选地,消息中间件在获取上述消息文件的数量之后,可以对该数量与上述阈值进行比较,若该数量大于阈值,则消息中间件可以获取该数量与阈值之间的差值,来确定待删除文件数量。
4、根据待删除文件数量,按编号从小到大的顺序删除目标消息队列对应的消息文件。
可选地,消息中间件在获取上述待删除文件数量之后,可以按编号从小到大的顺序删除目标消息队列中对应的消息文件。在本申请实施例中,消息中间件在删除消息文件时,需要先确定该消息文件中的消息是否被使用。可选地,若在确定删除上述目标消息队列对应的第一消息文件,且该第一消息文件正在被消息消费者使用,则消息中间件可以向上述消息消费者发送转移请求;其中,该转移请求用于指示该消息消费者停止使用上述第一消息文件,并开始使用上述目标消息队列对应的第二消息文件,该第二消息文件是该目标消息队列中的非待删除文件。
示例性地,结合参考图6,消息中间件在确定对目标消息队列中的消息文件进行删除时,可以先确定该消息文件的数量n,并获取该数量n与上述阈值d之间的差值k,进一步地,若上述差值k大于零,则消息中间件确定待删除文件,并判断消息消费者是否在使用该待删除文件,若消息消费者正在使用该待删除文件,则向消息消费者发送转移请求;若消息消费者未使用该待删除文件,则直接删除该待删除文件。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图7,其示出了本申请一个实施例提供的消息处理装置的框图。该装置具有实现上述消息处理方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是中间设备,也可以设置在中间设备中。该装置700可以包括:消息接收模块710、消息存储模块720、策略获取模块730和文件删除模块740。
消息接收模块710,用于接收消息生产者发送的第一消息。
消息存储模块720,用于将所述第一消息存储至目标消息队列对应的消息文件中,所述消息文件持久化存储在存储介质中。
策略获取模块730,用于获取所述目标消息队列对应的删除策略,所述删除策略是可动态配置的用于控制所述目标消息队列对应的消息文件进行删除的条件。
文件删除模块740,用于根据所述删除策略,对所述目标消息队列对应的消息文件进行删除。
在示例性实施例中,所述文件删除模块1004,用于响应于所述目标队列对应的消息文件的数量大于阈值,对所述目标消息队列对应的消息文件进行删除。
在示例性实施例中,所述文件删除模块,还用于获取所述目标消息队列对应的消息文件的编号;根据所述编号,确定所述目标消息队列对应的消息文件的数量;响应于所述数量大于所述阈值,确定待删除文件数量;根据所述待删除文件数量,按所述编号从小到大的顺序删除所述目标消息队列对应的消息文件。
在示例性实施例中,如图8所示,所述装置700包括:请求发送模块750。
请求发送模块750,用于若确定删除所述目标消息队列对应的第一消息文件,且所述第一消息文件正在被消息消费者使用,则向所述消息消费者发送转移请求;其中,所述转移请求用于指示所述消息消费者停止使用所述第一消息文件,并开始使用所述目标消息队列对应的第二消息文件,所述第二消息文件是所述目标消息队列中的非待删除文件。
在示例性实施例中,所述消息存储模块720,用于响应于所述目标消息队列已创建的消息文件未达到存储上限值,将所述第一消息存储至所述已创建的消息文件中;或者,响应于所述目标消息队列已创建的消息文件已达到存储上限值,创建所述目标消息队列对应的新的消息文件,并将所述第一消息存储至所述新的消息文件中。
在示例性实施例中,所述消息接收模块710,用于接收所述消息生产者发送的消息存储请求,所述消息存储请求中包括所述第一消息、所述目标消息队列的指示信息和所述第一消息对应的延时信息;其中,所述第一消息对应的延时信息用于指示对所述第一消息进行持久化存储的延迟时间。
在示例性实施例中,如图8所示,所述装置700还包括:第一发送模块760和第二发送模块770。
第一发送模块760,用于向所述目标消息队列对应的消息消费者发送第一信息,所述第一信息用于提醒所述消息消费者使用所述第一消息;
第二发送模块770,用于向所述消息生产者发送第二信息,所述第二信息用于提醒所述消息生产者所述第一消息已完成持久化存储。
在示例性实施例中,如图8所示,所述装置700还包括:请求接收模块780和消息发送模块790。
请求接收模块780,用于接收消息消费者发送的消息获取请求,所述消息获取请求中包括消息消费规则。
消息发送模块790,用于若所述消息消费规则中包括向前跳跃消费的指示信息,则根据所述向前跳跃消费的指示信息,向所述消息消费者发送所述消息文件中的消息,所述消息的接收时间早于所述第一消息;若所述消息消费规则中包括向后跳跃消费的指示信息,则根据所述向后跳跃消费的指示信息,等待接收新的消息,并向所述消息消费者发送所述新的消息。
综上所述,本申请实施例提供的技术方案中,通过删除策略对目标消息队列中的消息文件进行删除,避免了因文件堆积而造成的文件占用空间太大的问题,节省消息中间件的存储空间,减少了消息中间件的处理开销;对消息进行持久化存储,有效地避免了因清除缓存而造成的文件丢失,保证了消息消费者充分使用消息;删除策略可动态配置,使得消息中间件可以根据实际情况调配删除策略,提高了消息中间件进行文件删除中时的灵活性和自由度。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图9,其示出了本申请实施例提供的一种计算机设备的结构框图。该计算机设备可以用于实施上述实施例中提供的消息处理方法。具体来讲:
该计算机设备900包括处理单元(如CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)和FPGA(Field Programmable GateArray,现场可编程逻辑门阵列)等)901、包括RAM(Random Access Memory,随机存取存储器)902和ROM(Read Only Memory,只读存储器)903的系统存储器904,以及连接系统存储器904和中央处理单元901的系统总线905。该计算机设备900还包括帮助计算计算机设备内的各个器件之间传输信息的基本I/O系统(Input/Output,输入/输出)906,和用于存储操作系统913、应用程序914和其他程序模块915的大容量存储设备907。
该基本输入/输出系统906包括有用于显示信息的显示器908和用于用户输入信息的诸如鼠标、键盘之类的输入设备909。其中,该显示器908和输入设备909都通过连接到系统总线905的输入输出控制器910连接到中央处理单元901。该基本输入/输出系统906还可以包括输入输出控制器910以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器910还提供输出到显示屏、打印机或其他类型的输出设备。
该大容量存储设备907通过连接到系统总线905的大容量存储控制器(未示出)连接到中央处理单元901。该大容量存储设备907及其相关联的计算机可读介质为计算机设备900提供非易失性存储。也就是说,该大容量存储设备907可以包括诸如硬盘或者CD-ROM(Compact Disc Read-Only Memory,只读光盘)驱动器之类的计算机可读介质(未示出)。
不失一般性,该计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM(Erasable Programmable Read Only Memory,可擦除可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read Only Memory,电可擦可编程只读存储器)、闪存或其他固态存储其技术,CD-ROM、DVD(Digital Video Disc,高密度数字视频光盘)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知该计算机存储介质不局限于上述几种。上述的系统存储器1704和大容量存储设备907可以统称为存储器。
根据本申请实施例,该计算机设备900还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备900可以通过连接在该系统总线905上的网络接口单元911连接到网络912,或者说,也可以使用网络接口单元911来连接到其他类型的网络或远程计算机系统(未示出)。
该存储器还包括至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、至少一段程序、代码集或指令集存储于存储器中,且经配置以由一个或者一个以上处理器执行,以实现上述消息处理方法。
在示例性实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序在被处理器执行时以实现上述消息处理方法。
可选地,该计算机可读存储介质可以包括:ROM(Read Only Memory,只读存储器)、RAM(Random Access Memory,随机存取记忆体)、SSD(Solid State Drives,固态硬盘)或光盘等。其中,随机存取记忆体可以包括ReRAM(Resistance Random Access Memory,电阻式随机存取记忆体)和DRAM(Dynamic Random Access Memory,动态随机存取存储器)。
在示例性实施例中,还提供一种计算机程序产品,所述计算机程序产品被处理器执行时,用于实现上述消息处理方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本申请实施例对此不作限定。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (7)
1.一种消息处理方法,其特征在于,所述方法包括:
接收消息生产者发送的第一消息;
将所述第一消息存储至目标消息队列对应的消息文件中,所述消息文件持久化存储在存储介质中;
获取所述目标消息队列对应的删除策略,所述删除策略是可动态配置的用于控制所述目标消息队列对应的消息文件进行删除的条件;
根据所述删除策略,获取所述目标消息队列对应的消息文件的编号,所述编号是指所述消息文件的标识符号,同一消息队列中的消息文件具有不同的编号,且所述消息文件的编号的大小与所述消息文件的创建时间呈正比;
根据所述目标消息队列中的具有不同编号的消息文件的数量,确定所述目标消息队列对应的消息文件的数量;
响应于所述目标消息队列对应的消息文件的数量大于阈值,根据所述目标消息队列对应的消息文件的数量与所述阈值的差值,确定待删除文件数量,所述待删除文件数量是指所述目标消息队列中需要删除的消息文件的数量;
根据所述待删除文件数量,按所述编号从小到大的顺序删除所述目标消息队列对应的消息文件;
若确定删除所述目标消息队列对应的第一消息文件,且所述第一消息文件正在被消息消费者使用,则向所述消息消费者发送转移请求;其中,所述转移请求用于指示所述消息消费者停止使用所述第一消息文件,并开始使用所述目标消息队列对应的第二消息文件,所述第二消息文件是所述目标消息队列中的非待删除文件;
若确定删除所述目标消息队列对应的第一消息文件,且所述第一消息文件没有正在被消息消费者使用,则删除所述第一消息文件。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一消息存储至目标消息队列对应的消息文件中,包括:
响应于所述目标消息队列已创建的消息文件未达到存储上限值,将所述第一消息存储至所述已创建的消息文件中;
或者,
响应于所述目标消息队列已创建的消息文件已达到存储上限值,创建所述目标消息队列对应的新的消息文件,并将所述第一消息存储至所述新的消息文件中。
3.根据权利要求1所述的方法,其特征在于,所述接收消息生产者发送的第一消息,包括:
接收所述消息生产者发送的消息存储请求,所述消息存储请求中包括所述第一消息、所述目标消息队列的指示信息和所述第一消息对应的延时信息;
其中,所述第一消息对应的延时信息用于指示对所述第一消息进行持久化存储的延迟时间。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述将所述第一消息存储至目标消息队列对应的消息文件中之后,还包括:
向所述目标消息队列对应的消息消费者发送第一信息,所述第一信息用于提醒所述消息消费者使用所述第一消息;
向所述消息生产者发送第二信息,所述第二信息用于提醒所述消息生产者所述第一消息已完成持久化存储。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括;
接收消息消费者发送的消息获取请求,所述消息获取请求中包括消息消费规则;
若所述消息消费规则中包括向前跳跃消费的指示信息,则根据所述向前跳跃消费的指示信息,向所述消息消费者发送所述消息文件中的消息,所述消息的接收时间早于所述第一消息;
若所述消息消费规则中包括向后跳跃消费的指示信息,则根据所述向后跳跃消费的指示信息,等待接收新的消息,并向所述消息消费者发送所述新的消息。
6.一种消息处理装置,其特征在于,所述装置包括:
消息接收模块,用于接收消息生产者发送的第一消息;
消息存储模块,用于将所述第一消息存储至目标消息队列对应的消息文件中,所述消息文件持久化存储在存储介质中;
策略获取模块,用于获取所述目标消息队列对应的删除策略,所述删除策略是可动态配置的用于控制所述目标消息队列对应的消息文件进行删除的条件;
文件删除模块,用于根据所述删除策略,
获取所述目标消息队列对应的消息文件的编号,所述编号是指所述消息文件的标识符号,同一消息队列中的消息文件具有不同的编号,且所述消息文件的编号的大小与所述消息文件的创建时间呈正比;根据所述目标消息队列中的具有不同编号的消息文件的数量,确定所述目标消息队列对应的消息文件的数量;响应于所述目标消息队列对应的消息文件的数量大于阈值,根据所述目标消息队列对应的消息文件的数量与所述阈值的差值,确定待删除文件数量,所述待删除文件数量是指所述目标消息队列中需要删除的消息文件的数量;根据所述待删除文件数量,按所述编号从小到大的顺序删除所述目标消息队列对应的消息文件;若确定删除所述目标消息队列对应的第一消息文件,且所述第一消息文件正在被消息消费者使用,则向所述消息消费者发送转移请求;其中,所述转移请求用于指示所述消息消费者停止使用所述第一消息文件,并开始使用所述目标消息队列对应的第二消息文件,所述第二消息文件是所述目标消息队列中的非待删除文件;若确定删除所述目标消息队列对应的第一消息文件,且所述第一消息文件没有正在被消息消费者使用,则删除所述第一消息文件。
7.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至5任一项所述的消息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010115853.5A CN111538600B (zh) | 2020-02-25 | 2020-02-25 | 消息处理方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010115853.5A CN111538600B (zh) | 2020-02-25 | 2020-02-25 | 消息处理方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111538600A CN111538600A (zh) | 2020-08-14 |
CN111538600B true CN111538600B (zh) | 2023-09-12 |
Family
ID=71974783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010115853.5A Active CN111538600B (zh) | 2020-02-25 | 2020-02-25 | 消息处理方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111538600B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913821B (zh) * | 2020-08-17 | 2021-07-16 | 武汉众邦银行股份有限公司 | 一种实现跨数据源实时数据流生产消费的方法 |
CN112187785B (zh) * | 2020-09-25 | 2023-01-31 | 北京自如信息科技有限公司 | 消息处理方法、装置、电子设备和存储介质 |
CN112148712A (zh) * | 2020-09-27 | 2020-12-29 | 上海依图网络科技有限公司 | 一种数据处理方法、装置、设备及介质 |
CN112559223A (zh) * | 2020-12-24 | 2021-03-26 | 京东数字科技控股股份有限公司 | 一种消息发送方法、装置、设备和计算机可读存储介质 |
CN113014618B (zh) * | 2021-01-12 | 2022-04-29 | 腾讯科技(深圳)有限公司 | 消息处理方法、系统和电子设备 |
CN112887196B (zh) * | 2021-01-20 | 2023-03-24 | 远景智能国际私人投资有限公司 | 消息发送方法、系统、装置、设备及可读存储介质 |
CN115208799B (zh) * | 2021-03-26 | 2023-10-03 | 大唐移动通信设备有限公司 | 一种心跳管理方法、装置及存储介质 |
CN113076290B (zh) * | 2021-04-12 | 2024-01-30 | 百果园技术(新加坡)有限公司 | 文件删除方法、装置、设备、系统及存储介质 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5278984A (en) * | 1990-12-19 | 1994-01-11 | Bull Hn Information Systems Inc. | Method for managing requests by specifying time intervals for transmitting a minimum number of messages for specific destinations and priority levels |
CN1589442A (zh) * | 2001-10-05 | 2005-03-02 | Bea系统公司 | 用于与多重调度池进行消息接发的应用服务器的系统 |
CN101459627A (zh) * | 2008-04-07 | 2009-06-17 | 中兴通讯股份有限公司 | 消息管理方法 |
JP2011210107A (ja) * | 2010-03-30 | 2011-10-20 | Nippon Telegr & Teleph Corp <Ntt> | メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム |
CN103312619A (zh) * | 2013-05-30 | 2013-09-18 | 南京邮电大学 | 一种同时删除和转移消息的拥塞控制方法 |
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
CN105138410A (zh) * | 2015-08-31 | 2015-12-09 | 北京锐安科技有限公司 | 一种基于磁盘缓存的消息队列的实现方法及装置 |
JP2016095824A (ja) * | 2014-11-07 | 2016-05-26 | 富士通株式会社 | イベントドリブンシステム、情報処理装置、イベントドリブンプログラムおよびイベントドリブン方法 |
CN106330750A (zh) * | 2016-08-17 | 2017-01-11 | 成都聚美优品科技有限公司 | 一种可控式大并发分布式消息队列推送方法 |
CN106878473A (zh) * | 2017-04-20 | 2017-06-20 | 腾讯科技(深圳)有限公司 | 一种消息处理方法、服务器集群及系统 |
CN107038075A (zh) * | 2015-07-14 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 消息队列系统以及实现消息通信的方法 |
CN108985477A (zh) * | 2018-06-29 | 2018-12-11 | 北京嘀嘀无限科技发展有限公司 | 业务处理方法、装置及存储介质 |
CN109840103A (zh) * | 2017-11-27 | 2019-06-04 | 西门子(中国)有限公司 | 应用程序容器的更新方法、装置和存储介质 |
CN110333956A (zh) * | 2019-05-23 | 2019-10-15 | 平安普惠企业管理有限公司 | 消息队列中消息存储方法、装置、介质及电子设备 |
-
2020
- 2020-02-25 CN CN202010115853.5A patent/CN111538600B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5278984A (en) * | 1990-12-19 | 1994-01-11 | Bull Hn Information Systems Inc. | Method for managing requests by specifying time intervals for transmitting a minimum number of messages for specific destinations and priority levels |
CN1589442A (zh) * | 2001-10-05 | 2005-03-02 | Bea系统公司 | 用于与多重调度池进行消息接发的应用服务器的系统 |
CN101459627A (zh) * | 2008-04-07 | 2009-06-17 | 中兴通讯股份有限公司 | 消息管理方法 |
JP2011210107A (ja) * | 2010-03-30 | 2011-10-20 | Nippon Telegr & Teleph Corp <Ntt> | メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム |
CN103312619A (zh) * | 2013-05-30 | 2013-09-18 | 南京邮电大学 | 一种同时删除和转移消息的拥塞控制方法 |
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
JP2016095824A (ja) * | 2014-11-07 | 2016-05-26 | 富士通株式会社 | イベントドリブンシステム、情報処理装置、イベントドリブンプログラムおよびイベントドリブン方法 |
CN107038075A (zh) * | 2015-07-14 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 消息队列系统以及实现消息通信的方法 |
CN105138410A (zh) * | 2015-08-31 | 2015-12-09 | 北京锐安科技有限公司 | 一种基于磁盘缓存的消息队列的实现方法及装置 |
CN106330750A (zh) * | 2016-08-17 | 2017-01-11 | 成都聚美优品科技有限公司 | 一种可控式大并发分布式消息队列推送方法 |
CN106878473A (zh) * | 2017-04-20 | 2017-06-20 | 腾讯科技(深圳)有限公司 | 一种消息处理方法、服务器集群及系统 |
CN109840103A (zh) * | 2017-11-27 | 2019-06-04 | 西门子(中国)有限公司 | 应用程序容器的更新方法、装置和存储介质 |
CN108985477A (zh) * | 2018-06-29 | 2018-12-11 | 北京嘀嘀无限科技发展有限公司 | 业务处理方法、装置及存储介质 |
CN110333956A (zh) * | 2019-05-23 | 2019-10-15 | 平安普惠企业管理有限公司 | 消息队列中消息存储方法、装置、介质及电子设备 |
Non-Patent Citations (1)
Title |
---|
深入解析Kafka消费者——提交和偏移量;消失er;《https://www.jianshu.com/p/6845469d99e6》;正文第1-10页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111538600A (zh) | 2020-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111538600B (zh) | 消息处理方法、装置、计算机设备及存储介质 | |
CN107818056B (zh) | 一种队列管理方法及装置 | |
CN110196770B (zh) | 云系统内存数据处理方法、装置、设备及存储介质 | |
US10235047B2 (en) | Memory management method, apparatus, and system | |
US10255114B2 (en) | Abnormality detection apparatus, control method, and program | |
KR20120102664A (ko) | 미래 사용 추정에 기반한 저장 메모리 할당 | |
CN104102693A (zh) | 对象处理方法和装置 | |
CN112698793B (zh) | 一种数据存储方法、装置、机器可读介质及设备 | |
CN111061752A (zh) | 数据处理方法、装置及电子设备 | |
WO2022211724A1 (en) | Method and apparatus for transmitting messages, and device and storage medium thereof | |
CN111708812A (zh) | 一种分布式数据处理方法 | |
CN108132759B (zh) | 一种文件系统中管理数据的方法和装置 | |
US9177274B2 (en) | Queue with segments for task management | |
CN109862069B (zh) | 消息处理方法和装置 | |
US10289312B2 (en) | Method of reordering a queue of write requests | |
US20230393782A1 (en) | Io request pipeline processing device, method and system, and storage medium | |
CN116204311A (zh) | Pod集群扩缩容方法、装置、计算机设备和存储介质 | |
WO2021218626A1 (zh) | 数据存储方法、装置、设备及存储介质 | |
US20210157787A1 (en) | Methods and systems for reading data based on plurality of blockchain networks | |
CN111405313B (zh) | 存储流媒体数据的方法和系统 | |
CN114610679A (zh) | 存储设备及其数据存储方法、云端存储系统 | |
CN107544760B (zh) | 一种分布式存储请求的下发方法、装置、设备及存储介质 | |
CN112003860B (zh) | 适用于远程直接内存访问的内存管理方法、系统及介质 | |
CN115509763B (zh) | 指纹计算方法及装置 | |
CN115794446B (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 |