CN113656191A - 一种消息中间件的历史消息回放方法及装置 - Google Patents
一种消息中间件的历史消息回放方法及装置 Download PDFInfo
- Publication number
- CN113656191A CN113656191A CN202110814008.1A CN202110814008A CN113656191A CN 113656191 A CN113656191 A CN 113656191A CN 202110814008 A CN202110814008 A CN 202110814008A CN 113656191 A CN113656191 A CN 113656191A
- Authority
- CN
- China
- Prior art keywords
- message
- playback
- messages
- historical
- task
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 230000008569 process Effects 0.000 claims abstract description 52
- 238000011084 recovery Methods 0.000 claims abstract description 9
- 230000002085 persistent effect Effects 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000036316 preload Effects 0.000 description 2
- 238000004886 process control Methods 0.000 description 2
- 239000000969 carrier Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出了一种消息中间件的历史消息回放方法及装置,回放方法,包括:基于历史消息的消费顺序和时间间隔,创建回放任务;通过所述回放任务,按照历史消息的消费顺序和时间间隔回放所述历史消息;其中,在历史消息回放过程中,通过预设指令对历史消息回放执行暂停、恢复、结束及倍速回放操作。本发明提供了进程可控的、遵照原时间间隔的消息中间件历史消息回放技术方案,在遵照原时间间隔的情况下进行历史消息回放,保留了不同原始消息之间的时间间隔信息,即保留了重要的过程信息;同时对回放进程提供了任务化,作业化管理,可以方便地对回放过程进行开始、暂停、恢复、停止等控制。
Description
技术领域
本发明涉及消息中间件技术领域,尤其涉及一种消息中间件的历史消息回放方法及装置。
背景技术
消息中间件是分布式系统中提供高效可靠数据收发服务的重要子系统。当前,RocketMQ、Kafka、Pulsar等主流消息中间件提供的消息回放功能都有所局限。局限在于:
对历史消息的时间信息不够关注,不能提供遵循原时间间隔的历史回放,回放过程中损失了历史消息的时间间隔信息;无法提供对回放过程的暂停、恢复、停止等进程控制;无法提供对回放过程的速率控制。
发明内容
本发明要解决的技术问题是解决消息中间件的消息回放无法按照原消息事件间隔、无法进行回放过程控制、无法倍速回放的问题,本发明提出一种消息中间件的历史消息回放方法及装置。
根据本发明实施例的消息中间件的历史消息回放方法,包括:
基于历史消息的消费顺序和时间间隔,创建回放任务;
通过所述回放任务,按照历史消息的消费顺序和时间间隔回放所述历史消息;
其中,在历史消息回放过程中,通过预设指令对历史消息回放执行暂停、恢复、结束及倍速回放操作。
根据本发明的一些实施例,在创建所述回放任务前,对消息中间件的消息进行异构持久化存储,包括:
对消息数据采取结构化存储方式,将消息内容以文件形式存储在本地磁盘;将消息的记录信息存储在关系型数据库。
在本发明的一些实施例中,在完成所述回放任务创建后,根据所述关系型数据库从所述本地磁盘分批次预加载需要回放的所述历史消息。
根据本发明的一些实施例,所述通过所述回放任务,按照历史消息的消费顺序和时间间隔回放所述历史消息,包括:
根据所述回放任务,根据历史消息的消费顺序和时间间隔设置到期时间,并将所述历史消息作为延迟队列元素加入延迟优先队列;
以元素到期时间作为优先级,距离到期时间越近的元素优先级越高,在所述延迟优先队列中的位置越靠前;
通过读取所述延迟优先队列中的元素,实现按照历史消息的消费顺序和时间间隔回放所述历史消息。
在本发明的一些实施例中,通过对元素在所述延迟优先队列时长计时的控制,实现对回放进程的控制。
根据本发明实施例的消息中间件的历史消息回放装置,包括:
任务创建模块,用于基于历史消息的消费顺序和时间间隔,创建回放任务;
回放模块,用于通过所述回放任务,按照历史消息的消费顺序和时间间隔回放所述历史消息;
控制模块,用于在历史消息回放过程中,通过预设指令对历史消息回放执行暂停、恢复、结束及倍速回放操作。
根据本发明的一些实施例,所述装置还包括:存储模块,用于在创建所述回放任务前,对消息中间件的消息进行异构持久化存储,包括:
对消息数据采取结构化存储方式,将消息内容以文件形式存储在本地磁盘;将消息的记录信息存储在关系型数据库。
在本发明的一些实施例中,所述装置还包括:预加载模块,用于在完成所述回放任务创建后,根据所述关系型数据库从所述本地磁盘分批次预加载需要回放的所述历史消息。
根据本发明的一些实施例,所述回放模块具体用于:
根据所述回放任务,根据历史消息的消费顺序和时间间隔设置到期时间,并将所述历史消息作为延迟队列元素加入延迟优先队列;
以元素到期时间作为优先级,距离到期时间越近的元素优先级越高,在所述延迟优先队列中的位置越靠前;
通过读取所述延迟优先队列中的元素,实现按照历史消息的消费顺序和时间间隔回放所述历史消息。
在本发明的一些实施例中,所述控制模块通过对元素在所述延迟优先队列时长计时的控制,实现对回放进程的控制。
本发明提出的消息中间件的历史消息回放方法及装置具有如下优点:
本发明提供了进程可控的、遵照原时间间隔的消息中间件历史消息回放技术方案。在遵照原时间间隔的情况下进行历史消息回放,保留了不同原始消息之间的时间间隔信息,即保留了重要的过程信息。同时对回放进程提供了任务化,作业化管理,可以方便地对回放过程进行开始、暂停、恢复、停止等控制。
附图说明
图1为根据本发明实施例的消息中间件的历史消息回放方法流程图;
图2为根据本发明实施例的业务流程示意图;
图3为根据本发明实施例的消息结构化存储示意图;
图4为根据本发明实施例的消息存储过程流程图;
图5为根据本发明实施例的分批次预加载流程图;
图6为根据本发明实施例的分表查询示意图;
图7为根据本发明实施例的延迟优先队列的小顶堆实现原理图;
图8为根据本发明实施例的队列元素设计说明图;
图9为根据本发明实施例的延迟优先队列示意图;
图10为根据本发明实施例的延迟优先队列元素读取流程示意图;
图11为根据本发明实施例的消息中间件的历史消息回放方法流程图。
具体实施方式
为更进一步阐述本发明为达成预定目的所采取的技术手段及功效,以下结合附图及较佳实施例,对本发明进行详细说明如后。
本发明中说明书中对方法流程的描述及本发明说明书附图中流程图的步骤并非必须按步骤标号严格执行,方法步骤是可以改变执行顺序的。而且,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
为了便于理解本方案,首先对本发明方案中涉及的技术术语进行相应解释:
a)消息中间件:消息中间件,是一类以消息为载体进行通信的中间件,利用高效可靠的消息机制来实现不同应用间大量的数据交换,是分布式应用系统中重要的支撑性传输组件。在大型分布式系统中,消息中间件通常采用消息队列的通信模型。消息队列的逻辑结构来自于先进先出(FIFO)的队列(Queue)结构。
消息中间件因其低耦合、分布式可靠传递、流量控制等优点,被广泛运用在构建军事、消防救灾、网络安全等领域软件平台上,是平台各程序间通信的核心手段。当前主流的消息中间件包括RocketMQ、Kafaka、RabbitMQ等等。
b)回溯消费(或历史消息回放):在消息中间件的应用场景下,对于消息消费者(或者说消息的接受者)已经消费成功的消息,由于业务需求需要重新消费;或者由于消费者的系统故障,恢复后需要重新消费某段时间之前的数据。消息中间件通常需要具备回溯消费的功能,支持将历史消息重新进行回放,重新推送到目的接收者。
c)延迟队列:队列是一种特殊的数据结构,它只允许在队列的前端(front)进行删除操作,而在队列的后端(rear)进行插入操作,因此队列的元素通常是先进先出的(FIFO),对队列或队列元素的操作需要严格依照插入顺序。延迟队列是一种依照插入元素的自定义延迟时间的队列。延迟队列是一种时间优先队列。只有当队列元素的自定义延迟时间小于0时,队列元素才可以从队列中被取出。
相关技术中,如Apache RocketMQ中的回溯消费,通过命令行工具(mqadmin.cmd可运行管理工具)或者RocketMQ的控制台(RocketMQ console),设置某个主题回溯到指定时间点。首先RocketMQ的集群服务器查询该主题在指定时间的消息队列偏移地址(offset),之后将偏移地址告知连接该集群服务器的消息消费者。消息消费者根据集群告知的队列偏移地址,从消息队列指定偏移位置重新消费之后的消息。
上述技术手段存在如下缺陷:
缺点1:无法按照原发送时间间隔进行回放。
现有的消息中间件回溯消费技术,例如Apache RocketMQ中的回溯消费,通过用户在管理工具中设置指定主题回溯到指定历史时间位点,消息的接收者可重新接收消费这些历史消息。这个过程中,消费者依次从消息队列中取出历史数据,但却丢失了原有的时间间隔信息。例如,接收方在消息A接受到1分钟后接受到了消息B,在重新消息回放的过程中,两条回放消息之间的时间间隔往往不再是1分钟,通常是将所有历史消息一次性消费。
在消息中间件广泛应用的网络安全、军事、消防等领域,不同消息之间的时间间隔往往包含着重要的过程信息。因此本发明旨在提出一种按照原时间间隔,保留过程信息的消息中间件历史回放技术。
缺点2:无法对回放过程进行控制。
现有的消息中间件回溯消费技术,重新对指定时间点后历史消息进行一次性消费。对回放过程的控制没有提供完善的技术实现,导致在回放过程中,如果需要对回放过程进行定制化控制,需要的操作较为复杂,步骤较为繁琐。即存在操作繁琐,操作误差大,操作实效性差的缺点。
因此,本发明旨在提出一种可以对回放过程进行开始、暂停、恢复、停止、倍速等控制的回放技术方案,实现对消息中间件历史回放控制。并对历史消息回放提供完整的任务化、作业化的系统管理。
如图1所示,根据本发明实施例的消息中间件的历史消息回放方法,包括:
S100,基于历史消息的消费顺序和时间间隔,创建回放任务;
S200,通过回放任务,按照历史消息的消费顺序和时间间隔回放历史消息;
其中,在历史消息回放过程中,通过预设指令对历史消息回放执行暂停、恢复、结束及倍速回放操作。
根据本发明的一些实施例,如图3和图4所示,在创建回放任务前,对消息中间件的消息进行异构持久化存储,包括:
对消息数据采取结构化存储方式,将消息内容以文件形式存储在本地磁盘;将消息的记录信息存储在关系型数据库。
在本发明的一些实施例中,如图5所示,在完成回放任务创建后,根据关系型数据库从本地磁盘分批次预加载需要回放的历史消息。
根据本发明的一些实施例,结合图7-图9所示,通过回放任务,按照历史消息的消费顺序和时间间隔回放历史消息,包括:
根据回放任务,根据历史消息的消费顺序和时间间隔设置到期时间,并将历史消息作为延迟队列元素加入延迟优先队列;
以元素到期时间作为优先级,距离到期时间越近的元素优先级越高,在延迟优先队列中的位置越靠前;
通过读取延迟优先队列中的元素,实现按照历史消息的消费顺序和时间间隔回放历史消息。
在本发明的一些实施例中,如图10和图11所示,通过对元素在延迟优先队列时长计时的控制,实现对回放进程的控制。
根据本发明实施例的消息中间件的历史消息回放装置,包括:任务创建模块,回放模块和控制模块。
其中,任务创建模块用于基于历史消息的消费顺序和时间间隔,创建回放任务;
回放模块用于通过回放任务,按照历史消息的消费顺序和时间间隔回放历史消息;
控制模块用于在历史消息回放过程中,通过预设指令对历史消息回放执行暂停、恢复、结束及倍速回放操作。
根据本发明的一些实施例,如图3和图4所示,装置还包括:存储模块,用于在创建回放任务前,对消息中间件的消息进行异构持久化存储,包括:
对消息数据采取结构化存储方式,将消息内容以文件形式存储在本地磁盘;将消息的记录信息存储在关系型数据库。
在本发明的一些实施例中,如图5所示,装置还包括:预加载模块,用于在完成回放任务创建后,根据关系型数据库从本地磁盘分批次预加载需要回放的历史消息。
根据本发明的一些实施例,结合图7-图9所示,回放模块具体用于:
根据回放任务,根据历史消息的消费顺序和时间间隔设置到期时间,并将历史消息作为延迟队列元素加入延迟优先队列;
以元素到期时间作为优先级,距离到期时间越近的元素优先级越高,在延迟优先队列中的位置越靠前;
通过读取延迟优先队列中的元素,实现按照历史消息的消费顺序和时间间隔回放历史消息。
在本发明的一些实施例中,如图10和图11所示,控制模块通过对元素在延迟优先队列时长计时的控制,实现对回放进程的控制。
本发明提出的消息中间件的历史消息回放方法及装置具有如下优点:
本发明提供了进程可控的、遵照原时间间隔的消息中间件历史消息回放技术方案。在遵照原时间间隔的情况下进行历史消息回放,保留了不同原始消息之间的时间间隔信息,即保留了重要的过程信息。同时对回放进程提供了任务化,作业化管理,可以方便地对回放过程进行开始、暂停、恢复、停止等控制。
下面参照附图以一个具体的实施例详细描述根据本发明的消息中间件的历史消息回放方法及装置。值得理解的是,下述描述仅是示例性描述,而不应理解为对本发明的具体限制。
首先介绍本发明的功能和应用场景:消息中间件的历史消息(已经被接收消费过的消息,或者未被正常接收消费的消息)需要被重新消费,并且可能需要对回放任务过程进行开始、暂停、恢复、停止等过程控制,以及可能需要N倍速等定制化回放。
结合本发明的功能,介绍本发明的业务流程,业务流程图如图2所示:
首先需要创建回放任务,本发明提供对回放的任务化管理。创建回放任务需要指定消息的主题,并选定需要回放的历史时间段。其中消息主题是表示一类消息的集合,用于区分消息的不同类别。
例如:当前创建一个回放任务,需要重新消费昨天15:00~16:00这一时间段内,消息主题为“主题A”的消息。
当开始回放任务后,可以按照原来消息的消费顺序和时间间隔陆续重新消费到这些历史消息。在回放过程中,可以根据需要,对回放进行暂停。当任务处于暂停状态时,可以通过“恢复”指令接口,控制任务从暂停点继续开始回放。当回放全部完成,或者接收到“结束”的接口指令,回放过程结束。
可以设定回放的倍速速率来进行倍速模式下的回放,例如在2倍速模式下,原消息A和消息B之间的时间间隔为10秒钟,那么在回放过程中,重新消费到消息A和消息B的时间间隔为5秒钟。
技术方案具体如下:
1)优化的历史消息异构持久化存储。
进行回放任务,首先需要对消息中间件的消息进行存储,以供消息回放时重新获取历史消息。原始的消息数据以非结构化的形式缓存,本发明采用异构的持久化存储方案。如图3所示,对消息数据采取结构化存储方式,将消息体内容以文件的形式存储在本地磁盘,并将消息的主题、发送时间、消息体文件索引等消息记录存储在关系型数据库。
当需要对消息进行存储的时候,首先选定需要存储的主题,负责存储的进程启动用于存储消息的消费者,这些消费者用于监听选定主题的消息,将接受到的消息存储起来。其中将消息的消息体内容以文件形式存储在本地磁盘,将文件索引和消息主题、消息发送时间等关键信息以结构化的形式存储在关系型数据库当中,消息存储的过程流程图如图4所示。
需要说明的是,消息关键信息和消息体内容的分开存储,降低了在关系数据库中检索加载消息数据的传输开销;读取本地文件的方式获取消息内容,提升消息内容的加载读取效率。
消息中间件中的消息通常是海量的,当关系型数据库中数据表存储的数据越来越多,数据查询销量会大大降低。本发明在消息存储过程中,引入数据库的自动分表的策略。如图4中所示,消息存储将每小时创建一张数据表,以存储本小时当中的消息数据。以提升在海量数据下结构化消息数据的存取效率。
2)分批次的历史消息预加载。
当创建好回放任务之后,程序会从数据库和本地文件中预加载需要回放的历史消息。考虑到消息中间件中历史消息通常是海量的,当选定的回放时间段很长,或选定时间段内的数据量十分庞大的情况下,对所有消息的一次性加载会对计算机内存造成较大占用,对程序的高效运作带来较大压力。因此本发明对历史数据采用分批次的预加载。
首先按照时间范围将整个任务划分为n个阶段,例如任务需要回放时间跨度为1小时的历史消息,默认设定每个时间段长度为10分钟,那么整个任务被划分为6个子阶段。本发明以分批次方式,对预加载的流量进行削峰,保证回放过程的有序进行,使得计算机处理更加平稳,降低瞬时网络资源的高额占用。
当回放进行中时,预加载线程已经加载了i个阶段的数据,而当前的回放进程处于第j个阶段(即正在回放第j个阶段的数据),判断i是否大于j+2,即判断未来两个阶段的消息数据是否已经被加载了,如果没有,则需要提前加载未来两个阶段的消息数据,为回放做准备,分批次预加载流程图如图5所示。
在存储阶段,消息数据被按照消息的发送时间分表存储在不同的关系型数据库表中,例如2021年6月20日15:00至16:00时间段中的消息数据被存储在数据表“data_2021_06_20_15”中,而2021年6月20日17:00至18:00时间段中的消息数据被存储在数据表“data_2021_06_20_17”中。从数据库中加载消息数据时,同样需要分表的读取策略。
当有加载任务时,首先需要获知当前数据库中有哪些数据表,根据加载任务的时间范围确定所需读取一个数据表的集合,从该集合中剔除出不存在的数据表,表示在该时间段实际上并没有历史数据的存在。从而最终生成查询历史消息数据的查询语句。
根据查询得来的历史消息数据记录中的消息体文件索引,从本地磁盘中加载消息体内容。分表查询示意图如图6所示。
3)遵照原时间间隔的、进程可控的回放技术方案。
队列是一种特殊的数据结构,只允许在队列的前端(front)进行删除操作,而在队列的后端(rear)进行插入操作,因此队列的元素操作遵循先进先出的顺序。优先队列在队列的基础上,引入队列元素优先级的概念。元素在队列中的排列先后顺序不再由入队的先后顺序决定,而由各元素设定的优先级决定,优先级高的元素在队列中处在靠前的顺序位置上。
延迟时间优先队列,以元素到期时间作为优先级,距离到期时间越近的元素优先级越高,即处在越靠前的位置上。并且只有当元素在队列的时长达到预先设定的到期时间,元素才可以出队。本发明将历史消息重新发送的可执行任务作为延迟队列元素,将任务一一入队,通过对元素在队时长计时的控制,实现对回放进程的控制。例如,当回放任务处于暂停状态时,队列中元素的在队时长的计时被暂停。
优先队列的底层实现采用小顶堆的数据结构,小顶堆是在插入、移除操作中保证每个结点的值都小于或等于其左右子结点的值的数据结构。原理图如下图6所示,其中每个节点都表示一条等待发送的消息,消息需要在设定到期时间被发送,节点中的时间表示距离到期的剩余时间,小顶堆以此时间作为优先级,小顶堆保证堆顶的节点总是距离到期最近的。延迟优先队列的小顶堆实现原理图如图7所示。
加载线程负责将读取来的一条条消息数据,根据消息的主题、消息的内容创建为一个个可执行的发送任务,同时为其指定到期的时间,将这个执行的发送任务封装为队列的元素对象。队列元素的类设计如图8所示,其中队列元素包含可执行的发送任务和该任务的到期时长,并包含可以动态获知当前元素还有多久到期的方法。
预加载线程负责向延迟队列中按需塞入元素,而负责重新发送的线程则不断询问队头是否有到期的元素需要出队执行。延迟优先队列中各元素按照距离到期时长大小的优先级排队(距离到期越近的元素优先级越高,越靠前)。如图9所示,为延迟优先队列的示意图。
负责重新发送的线程需要不断尝试获取队头元素,当存在队头元素的时候,程序需要判断当前队头是否达到出队要求,即元素的剩余在队时长是否小于等于0,即元素的在队时长是否已经满足了预先指定的在队时长(即需要在队列中延迟等待的时间长度)。当队列为空时,拉取线程进入等待状态,等待唤醒(例如被加载线程唤醒);当队列处于暂停状态下时,计算的剩余时长始终为无穷大,拉取线程进入等待状态。当计算的剩余时长等于零时,满足出队条件,对头元素被拉取执行。如图10流程图所示。
队列包含控制队列开始、暂停、结束的字段。当控制回放任务进行暂停时,只需修改对应字段,将队列置于暂停状态,并更新记录当前回放任务的进度。处于暂停状态时的队列,在尝试获取队头元素是否已经到期时,得到的结果总是否定的,因此此时无法从队列中取出元素来执行,以便达到暂停的控制效果。
队列中包含控制倍速的字段,用于保存当前队列的倍速速率。当设置n倍速时,队列依然保持延迟时长优先的相对顺序,计算队头元素的剩余延迟时长时,剩余时长成倍减少(即所需的剩余延迟时长是原设定下的1/n,在拉取线程的不断拉取下,队列元素可倍速出队。
综上所述,本发明提供了进程可控的、遵照原时间间隔的消息中间件历史消息回放技术方案。在遵照原时间间隔的情况下进行历史消息回放,保留了不同原始消息之间的时间间隔信息,即保留了重要的过程信息。同时对回放进程提供了任务化,作业化管理,可以方便地对回放过程进行开始、暂停、恢复、停止等控制。
通过具体实施方式的说明,应当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图示仅是提供参考与说明之用,并非用来对本发明加以限制。
Claims (10)
1.一种消息中间件的历史消息回放方法,其特征在于,包括:
基于历史消息的消费顺序和时间间隔,创建回放任务;
通过所述回放任务,按照历史消息的消费顺序和时间间隔回放所述历史消息;
其中,在历史消息回放过程中,通过预设指令对历史消息回放执行暂停、恢复、结束及倍速回放操作。
2.根据权利要求1所述的消息中间件的历史消息回放方法,其特征在于,在创建所述回放任务前,对消息中间件的消息进行异构持久化存储,包括:
对消息数据采取结构化存储方式,将消息内容以文件形式存储在本地磁盘;将消息的记录信息存储在关系型数据库。
3.根据权利要求2所述的消息中间件的历史消息回放方法,其特征在于,在完成所述回放任务创建后,根据所述关系型数据库从所述本地磁盘分批次预加载需要回放的所述历史消息。
4.根据权利要求1所述的消息中间件的历史消息回放方法,其特征在于,所述通过所述回放任务,按照历史消息的消费顺序和时间间隔回放所述历史消息,包括:
根据所述回放任务,根据历史消息的消费顺序和时间间隔设置到期时间,并将所述历史消息作为延迟队列元素加入延迟优先队列;
以元素到期时间作为优先级,距离到期时间越近的元素优先级越高,在所述延迟优先队列中的位置越靠前;
通过读取所述延迟优先队列中的元素,实现按照历史消息的消费顺序和时间间隔回放所述历史消息。
5.根据权利要求4所述的消息中间件的历史消息回放方法,其特征在于,通过对元素在所述延迟优先队列时长计时的控制,实现对回放进程的控制。
6.一种消息中间件的历史消息回放装置,其特征在于,包括:
任务创建模块,用于基于历史消息的消费顺序和时间间隔,创建回放任务;
回放模块,用于通过所述回放任务,按照历史消息的消费顺序和时间间隔回放所述历史消息;
控制模块,用于在历史消息回放过程中,通过预设指令对历史消息回放执行暂停、恢复、结束及倍速回放操作。
7.根据权利要求6所述的消息中间件的历史消息回放装置,其特征在于,所述装置还包括:存储模块,用于在创建所述回放任务前,对消息中间件的消息进行异构持久化存储,包括:
对消息数据采取结构化存储方式,将消息内容以文件形式存储在本地磁盘;将消息的记录信息存储在关系型数据库。
8.根据权利要求7所述的消息中间件的历史消息回放装置,其特征在于,所述装置还包括:预加载模块,用于在完成所述回放任务创建后,根据所述关系型数据库从所述本地磁盘分批次预加载需要回放的所述历史消息。
9.根据权利要求6所述的消息中间件的历史消息回放装置,其特征在于,所述回放模块具体用于:
根据所述回放任务,根据历史消息的消费顺序和时间间隔设置到期时间,并将所述历史消息作为延迟队列元素加入延迟优先队列;
以元素到期时间作为优先级,距离到期时间越近的元素优先级越高,在所述延迟优先队列中的位置越靠前;
通过读取所述延迟优先队列中的元素,实现按照历史消息的消费顺序和时间间隔回放所述历史消息。
10.根据权利要求9所述的消息中间件的历史消息回放装置,其特征在于,所述控制模块通过对元素在所述延迟优先队列时长计时的控制,实现对回放进程的控制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110814008.1A CN113656191B (zh) | 2021-07-19 | 2021-07-19 | 一种消息中间件的历史消息回放方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110814008.1A CN113656191B (zh) | 2021-07-19 | 2021-07-19 | 一种消息中间件的历史消息回放方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113656191A true CN113656191A (zh) | 2021-11-16 |
CN113656191B CN113656191B (zh) | 2024-05-24 |
Family
ID=78477474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110814008.1A Active CN113656191B (zh) | 2021-07-19 | 2021-07-19 | 一种消息中间件的历史消息回放方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113656191B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114090304A (zh) * | 2022-01-19 | 2022-02-25 | 飞狐信息技术(天津)有限公司 | 一种基于消息中间件的消息回放方法和装置 |
CN114416797A (zh) * | 2022-01-19 | 2022-04-29 | 北京万旺科技有限公司 | 回放历史数据的方法及装置 |
CN116455956A (zh) * | 2023-06-16 | 2023-07-18 | 中国人民解放军国防科技大学 | 一种基于消息中间件的数据采集和数据回放的方法和系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020004835A1 (en) * | 2000-06-02 | 2002-01-10 | Inrange Technologies Corporation | Message queue server system |
US20030109248A1 (en) * | 2001-11-16 | 2003-06-12 | Lewis John Ervin | System and method for querying message information |
US20060146722A1 (en) * | 2004-12-30 | 2006-07-06 | Jean-Francois Dube | Altering latency for network testing |
US20090051752A1 (en) * | 2007-07-31 | 2009-02-26 | Tandberg Telecom As | Video call management apparatus and associated methodology of controlling voice and video response |
CN106371846A (zh) * | 2016-09-06 | 2017-02-01 | 上海天旦网络科技发展有限公司 | 基于网络数据和消息中间件的快速开发方法和业务系统 |
CN107193540A (zh) * | 2016-03-14 | 2017-09-22 | 高德信息技术有限公司 | 一种应用软件演示方法、装置 |
CN111915820A (zh) * | 2020-09-03 | 2020-11-10 | 安徽上尚电子科技股份有限公司 | 一种自助营业终端引导服务提供系统 |
CN113064742A (zh) * | 2021-04-12 | 2021-07-02 | 平安国际智慧城市科技股份有限公司 | 消息处理方法、装置、设备及存储介质 |
-
2021
- 2021-07-19 CN CN202110814008.1A patent/CN113656191B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020004835A1 (en) * | 2000-06-02 | 2002-01-10 | Inrange Technologies Corporation | Message queue server system |
US20030109248A1 (en) * | 2001-11-16 | 2003-06-12 | Lewis John Ervin | System and method for querying message information |
US20060146722A1 (en) * | 2004-12-30 | 2006-07-06 | Jean-Francois Dube | Altering latency for network testing |
US20090051752A1 (en) * | 2007-07-31 | 2009-02-26 | Tandberg Telecom As | Video call management apparatus and associated methodology of controlling voice and video response |
CN107193540A (zh) * | 2016-03-14 | 2017-09-22 | 高德信息技术有限公司 | 一种应用软件演示方法、装置 |
CN106371846A (zh) * | 2016-09-06 | 2017-02-01 | 上海天旦网络科技发展有限公司 | 基于网络数据和消息中间件的快速开发方法和业务系统 |
CN111915820A (zh) * | 2020-09-03 | 2020-11-10 | 安徽上尚电子科技股份有限公司 | 一种自助营业终端引导服务提供系统 |
CN113064742A (zh) * | 2021-04-12 | 2021-07-02 | 平安国际智慧城市科技股份有限公司 | 消息处理方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
YONGGUO J 等: ". Message-oriented middleware: A review", 2019 5TH INTERNATIONAL CONFERENCE ON BIG DATA COMPUTING AND COMMUNICATIONS (BIGCOM), 31 December 2019 (2019-12-31) * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114090304A (zh) * | 2022-01-19 | 2022-02-25 | 飞狐信息技术(天津)有限公司 | 一种基于消息中间件的消息回放方法和装置 |
CN114416797A (zh) * | 2022-01-19 | 2022-04-29 | 北京万旺科技有限公司 | 回放历史数据的方法及装置 |
CN116455956A (zh) * | 2023-06-16 | 2023-07-18 | 中国人民解放军国防科技大学 | 一种基于消息中间件的数据采集和数据回放的方法和系统 |
CN116455956B (zh) * | 2023-06-16 | 2023-08-15 | 中国人民解放军国防科技大学 | 一种基于消息中间件的数据采集和数据回放的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113656191B (zh) | 2024-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113656191A (zh) | 一种消息中间件的历史消息回放方法及装置 | |
US7565675B2 (en) | Scheduled retrieval, storage and access of media data | |
CN109445965B (zh) | 由Redis和MySQL实现的消息处理方法和设备 | |
CA2369493C (en) | Apparatus and method for efficient transfer of multimedia data for playback | |
JP3120963B2 (ja) | メッセージを転送する方法およびメッセージを転送するシステム | |
US8745498B2 (en) | Incorporating interactive media into a playlist | |
US7415470B2 (en) | Capturing and re-creating the state of a queue when migrating a session | |
US5603063A (en) | Disk drive command queuing method using two memory devices for storing two types of commands separately first before queuing commands in the second memory device | |
JP4955571B2 (ja) | ストリーミングメディアをバッファリングする方法及び装置 | |
KR101724176B1 (ko) | 기회적 멀티태스킹 | |
US7426192B2 (en) | Network conference system, conference server, record server, and conference terminal | |
US8516054B2 (en) | Message handling | |
EP3028471B1 (en) | Multimedia cache with dynamic segmenting | |
US20130081062A1 (en) | Scalable, Parallel Processing of Messages While Enforcing Custom Sequencing Criteria | |
JP2000048001A (ja) | コンピュ―タ・クラスタ用のリアルタイム共用ディスク・システム | |
CN112770128A (zh) | 一种直播礼物的播放系统以及方法、装置和服务器 | |
CN109358805A (zh) | 一种数据缓存方法 | |
CN114168367A (zh) | 一种通过批量任务解决队列积压的方法及系统 | |
CN112148441A (zh) | 一种动态储存方式的嵌入式消息队列实现方法 | |
CN106357557A (zh) | 一种消息处理方法及装置 | |
US20060140202A1 (en) | Retrieving data using an asynchronous buffer | |
CN113050911B (zh) | 音频播放方法和音频播放装置 | |
CN113709214A (zh) | 消息处理方法及装置、电子设备及存储介质 | |
CN108038007B (zh) | 一种基于Ignite的消息有序处理方法及系统 | |
EP3385866B1 (en) | Format-independent media file indexing |
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 |