CN104866602A - 队列处理方法及装置 - Google Patents
队列处理方法及装置 Download PDFInfo
- Publication number
- CN104866602A CN104866602A CN201510294128.8A CN201510294128A CN104866602A CN 104866602 A CN104866602 A CN 104866602A CN 201510294128 A CN201510294128 A CN 201510294128A CN 104866602 A CN104866602 A CN 104866602A
- Authority
- CN
- China
- Prior art keywords
- treatment progress
- message data
- temporary file
- progress
- monitoring process
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
Abstract
本发明公开了一种队列处理方法及装置。其中,该方法包括:接收多个消息数据,写入缓存队列;创建至少一个处理进程,处理进程用于处理消息数据;从缓存队列中读取预定数量的消息数据;将取预定数量的消息数据写入临时文件,其中,临时文件与处理进程相对应;通过处理进程处理临时文件中的消息数据。本发明解决了现有技术中大量数据并发写入数据库,导致的数据库死锁的问题。
Description
技术领域
本发明涉及互联网领域,具体而言,涉及一种队列处理方法及装置。
背景技术
近年来,随着移动互联网的发展,互联网已经被广泛的应用于人们生活、学习、工作的各个角落。因此,在每时每刻,都有大量的数据在互联网上进行传递。
在需要对数据库中的表或者字段进行修改时,数据库程序为了保证数据的一致性,会对数据库中的表或者字段通过锁定(Locking)的方式进行控制。当有大量数据并发写入数据库时,就有可能会因系统资源不足、资源分配不当等原因发生数据库死锁的现象。一旦发生数据库死锁,就有可能导致进程永久堵塞,或者需要写入数据库的信息丢失。
针对现有技术中大量数据并发写入数据库,导致的数据库死锁的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种队列处理方法及装置,以解决现有技术中大量数据并发写入数据库,导致的数据库死锁的问题。
为了实现上述目的,根据本发明实施例的一个方面,提供了一种队列处理方法。该方法包括:接收多个消息数据,写入缓存队列;创建至少一个处理进程,处理进程用于处理消息数据;从缓存队列中读取预定数量的消息数据;将取预定数量的消息数据写入临时文件,其中,临时文件与处理进程相对应;通过处理进程处理临时文件中的消息数据。
进一步的,在处理进程中设置计数器,其中,通过处理进程处理临时文件中的消息数据包括:读取临时文件中的消息数据;通过处理进程对临时文件进行处理;当处理进程对临时文件处理完成后,删除临时文件,并对与处理进程对应的计数器做累加运算。
进一步的,在当处理进程对临时文件处理完成后,删除临时文件,并对与处理进程对应的计数器做累加运算之后,方法还包括:将计数器中的数值与预先设置的第一阈值进行比对;当计数器中的数值小于或等于第一阈值时,重复执行从缓存队列中读取预定数量的消息数据的步骤;当计数器中的数值大于第一阈值时,结束处理进程。
进一步的,当缓存队列至少为两个的情况下,接收消息数据,写入缓存队列包括:接收消息数据;将消息数据随机存储至一个缓存队列中,并判断消息数据是否存储成功;当消息数据存储失败时,将消息数据存储至另一个缓存队列中;其中,当消息数据存储失败的次数大于预先设置的第二阈值时,生成错误日志。
进一步的,在通过处理进程处理临时文件中的消息数据之后,方法还包括:对处理进程设置预定时长的休眠时间。
进一步的,在创建至少一个处理进程,处理进程用于处理消息数据之后,方法还包括:创建监控进程,监控进程用于监控处理进程;监控进程监控处理进程执行对临时文件中的消息数据进行处理。
进一步的,监控进程监控处理进程执行对临时文件中的消息数据进行处理包括:当处理进程执行结束时,监控进程检测是否存在与处理进程对应的临时文件;当存在与处理进程对应的临时文件时,监控进程读取在临时文件中记录对临时文件的处理次数;监控进程调用处理进程对临时文件进行处理。
为了实现上述目的,根据本发明实施例的另一方面,提供了一种队列处理装置,该装置包括:接收模块,用于接收多个消息数据,写入缓存队列;第一创建模块,用于创建至少一个处理进程,处理进程用于处理消息数据;读取模块,用于从缓存队列中读取预定数量的消息数据;写入模块,用于将取预定数量的消息数据写入临时文件,其中,临时文件与处理进程相对应;处理模块,用于通过处理进程处理临时文件中的消息数据。
进一步的,第二创建模块,用于创建监控进程,监控进程用于监控处理进程;监控模块,用于监控进程监控处理进程执行对临时文件中的消息数据进行处理。
进一步的,子监测模块,用于当处理进程执行结束时,监控进程检测是否存在与处理进程对应的临时文件;第一子处理模块,用于当存在与处理进程对应的临时文件时,监控进程读取在临时文件中记录对临时文件的处理次数;第二子处理模块,用于监控进程调用处理进程对临时文件进行处理。
根据发明实施例,通过接收多个消息数据,写入缓存队列;创建至少一个处理进程,处理进程用于处理消息数据;从缓存队列中读取预定数量的消息数据;将取预定数量的消息数据写入临时文件,其中,临时文件与处理进程相对应;通过处理进程处理临时文件中的消息数据,解决了现有技术大量数据并发写入数据库,导致的数据库死锁的问题。实现了把大量并发写入的消息数据转化为串行或者通过处理进程将消息数据并发异步写入数据库的效果。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例一的队列处理方法的流程图;
图2是根据本发明实施例二的队列处理装置的结构示意图;
图3是根据本发明实施例二可选的队列处理装置的结构示意图;以及
图4是根据本发明实施例二可选的队列处理装置的监控模块的结构示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
本发明实施例提供了一种队列处理方法,图1是根据本发明实施例的队列处理方法的流程图,如图1所示,该方法包括步骤如下:
步骤S11,接收多个消息数据,写入缓存队列。
步骤S13,创建至少一个处理进程,处理进程用于处理消息数据。
步骤S15,从缓存队列中读取预定数量的消息数据。
步骤S17,将取预定数量的消息数据写入临时文件,其中,临时文件与处理进程相对应。
步骤S19,通过处理进程处理临时文件中的消息数据。
通过上述步骤,将接收到的消息数据写入缓存队列,并将缓存队列中预订数量的消息数据写入与处理进程一一对应的临时文件,最后通过处理进程对消息数据进行处理。从而解决了大量数据并发写入数据库,导致的数据库死锁的问题,通过利用二级缓存机制,处理进程将消息数据并发异步写入数据库的效果。
作为一个可选实施例,在步骤S11中,可以利用缓存系统,将接收到的消息数据以时间顺序进行保存。通过缓存系统,将大量并发写入的消息数据,转化为按照时间顺序进行保存的消息队列。利用上述方式,将大量并发的消息数据转化为串行的消息数据队列。
作为一个可选实施例,在步骤S11中,用于存储消息数据的缓存队列,可以通过分布式缓存系统实现。分布式内存对象缓存系统可以在内存中缓存数据和对象以减少读取数据库的次数。在实际应用中,上述分布式缓存系统可以采用多台基于MemcacheDB的消息队列服务器memcacheq来实现。
作为一个可选的实施例,通过步骤S13,可以通过创建多个处理进程进行异步处理,提升对缓存队列中的消息数据的处理速度。并且进一步的,通过步骤S15和步骤S17,建立与处理进程对应的临时文件,通过临时文件来控制各个处理进程所要处理的消息数据。
作为一个可选的实施例,在步骤S15中,可以通过识别消息数据所要写入数据库的数据表,将写入同一个数据表或者字段的消息数据,分配给同一个处理进程,通过该进程对消息数据进行顺序处理,从而避免数据库死锁的问题。
作为一个可选的实施例,在步骤S17中的临时文件,可以通过处理进程的名称和分配给处理进程的固定编号来决定,其中临时文件的格式可以是文本格式,XML格式,或者其他可被系统识别的格式。例如:处理进程的名称为test,分配给处理进程的编号为3。这样,产生的临时文件的命名格式如下{test_3.tmp},这样所产生的临时文件互不影响,系统自身也方便识别。
作为一个可选的实施例,在处理进程中设置计数器,其中,步骤S19通过处理进程处理临时文件中的消息数据中,可以包括如下步骤:
步骤S191,读取临时文件中的消息数据。
步骤S193,通过处理进程对临时文件进行处理。
步骤S195,当处理进程对临时文件处理完成后,删除临时文件,并对与处理进程对应的计数器做累加运算。
通过上述步骤S191至步骤S195,处理进程读取与其对应的临时文件,对临时文件所包含的消息数据依次进行处理。在对临时文件内包含的所有消息数据进行处理后,删除该临时文件。并控制处理进程中设置的计数器做一次自增运算。通过计数器记录当前处理进程处理临时文件的次数。
作为一个可选的实施例,在上述步骤S195当所述处理进程对所述临时文件处理完成后,删除所述临时文件,并对与所述处理进程对应的所述计数器做累加运算之后,方法还可以包括:
步骤S196,将计数器中的数值与预先设置的第一阈值进行比对。
步骤S197,当计数器中的数值小于或等于第一阈值时,重复执行从缓存队列中读取预定数量的消息数据的步骤。
步骤S198,当计数器中的数值大于第一阈值时,结束处理进程。
通过上述步骤S196至步骤S198,对处理进程中的计数器的数值进行判断。通过将计数器中的数值与预先设置的阈值进行比对,判断该处理进程是否已经超过预先规定的最大处理次数。当该处理进程已经超过预先规定的最大处理次数时,结束该处理进程。通过上述方法,防止处理进程长时间处理数据过程中,出现内存泄露、诶村溢出等问题,降低处理进程发生错误而导致崩溃的几率。
作为一个可选的实施例,在执行完步骤S198后,还可以通过监控进程重新建立一个新的处理进程,以取代被结束掉的处理进程。通过上述步骤,保证同时执行的处理进程的数量,保证处理效率。
作为一个可选的实施例,在使用分布式缓存系统时,系统中会有多个缓存队列。当缓存队列至少为两个的情况下,步骤S11接收消息数据,写入缓存队列,可以包括:
步骤S111,接收消息数据。
步骤S113,将消息数据随机存储至一个缓存队列中,并判断消息数据是否存储成功。
步骤S115,当消息数据存储失败时,将消息数据存储至另一个缓存队列中。
步骤S117,当消息数据存储失败的次数大于预先设置的第二阈值时,生成错误日志。
上述步骤S111至步骤S117中,对将接收到的消息数据存储至缓存队列中这一存储过程进行验证,验证该消息数据是否存储成功。如果存储不成功,则将该消息数据存储至其他缓存队列当中。进一步的,当对某一条消息数据随机存储至缓存序列中这一存储过程失败的次数多于预先设置的第二阈值时,说明该条消息数据存在问题。那么,根据该条消息数据生成错误日志。
作为一个可选的实施例,还可以通过监控进程对分布式缓存系统中的各个缓存队列进行监控。当某一缓存队列连续发生错误,并连续发生错误的次数超出预先设定的阈值时,针对该缓存队列生成错误日志。
作为一个可选的实施例,上述步骤S111至步骤S117在实际应用中,消息数据会先被随机写入memcacheq集群中的任意一台消息队列服务器memcacheq当中。如果写入失败,该条消息数据会被自动调整到另一台正常的可被写入的消息队列服务器memcacheq再次尝试写入。如果消息数据存储至消息队列服务器失败的次数超过预先设置的范围时,则将该消息日志写入错误日志中。
作为一个可选的实施例,在步骤S19通过处理进程处理临时文件中的消息数据之后,上述方法还包括:
步骤S20,对处理进程设置预定时长的休眠时间。
每当处理进程在对一个临时文件中的消息数据处理完成后,使进程进入休眠状态。通过使处理进程自动休眠S秒,将提高处理进程的稳定性。
作为一个可选的实施例,在步骤S13创建至少一个处理进程,处理进程用于处理消息数据之后,方法还可以包括:
步骤S141,创建监控进程,监控进程用于监控处理进程。
步骤S143,监控进程监控处理进程执行对临时文件中的消息数据进行处理。
上述步骤S141至步骤S143,通过建立监控进程,监控处理进程对临时文件中的消息数据进行处理的过程,从而确定处理进程在处理数据的过程中,是否出现进程崩溃。
作为一个可选的实施例,在步骤S143监控进程监控处理进程执行对临时文件中的消息数据进行处理中,步骤还可以包括:
步骤S1431,当处理进程结束时,监控进程检测是否存在与处理进程对应的临时文件。
步骤S1433,当存在与处理进程对应的临时文件时,监控进程读取在临时文件中记录对临时文件的处理次数。
步骤S1435,监控进程调用处理进程对临时文件进行处理。
通过步骤S1431至步骤S1435,对处理进程的处理步骤进行监控,一旦发现处理进程结束时,监控进程会查看临时目录里是否有与该进程对应的临时文件。如果发现有与结束的处理进程对应的临时文件,说明该处理进程为非正常结束。
监控进程读取该临时文件的处理次数,并对处理次数的数值进行累加运算。当临时文件中的处理次数达到预先设定的最大次数的阈值时,则将该临时文件转移到错误日志文件夹中。当,临时文件中的处理次数未达到预先设定的最大次数的阈值时,监控进程调用另一个或者新的处理进程,对该临时文件进行处理。
实施例2
本发明实施例还提供了一种队列处理装置,如图2所示,该装置可以包括:接收模块21、第一创建模块23、读取模块25、写入模块27和处理模块29。
其中,接收模块21,用于接收多个消息数据,写入缓存队列。第一创建模块23,用于创建至少一个处理进程,处理进程用于处理消息数据。读取模块25,用于从缓存队列中读取预定数量的消息数据。写入模块27,用于将取预定数量的消息数据写入临时文件,其中,临时文件与处理进程相对应。处理模块29,用于通过处理进程处理临时文件中的消息数据。
通过上述接收模块21、第一创建模块23、读取模块25、写入模块27和处理模块29,将接收到的消息数据写入缓存队列,并将缓存队列中预订数量的消息数据写入与处理进程一一对应的临时文件,最后通过处理进程对消息数据进行处理。从而解决了大量数据并发写入数据库,导致的数据库死锁的问题,通过利用二级缓存机制,处理进程将消息数据并发异步写入数据库的效果。
作为一个可选实施例,在上述接收模块21中,可以利用缓存系统,将接收到的消息数据以时间顺序进行保存。通过缓存系统,将大量并发写入的消息数据,转化为按照时间顺序进行保存的消息队列。利用上述方式,将大量并发的消息数据转化为串行的消息数据队列。
作为一个可选实施例,在上述接收模块21中,用于存储消息数据的缓存队列,可以通过分布式缓存系统实现。分布式内存对象缓存系统可以在内存中缓存数据和对象以减少读取数据库的次数。在实际应用中,上述分布式缓存系统可以采用多台基于MemcacheDB的消息队列服务器memcacheq来实现。
作为一个可选的实施例,通过上述第一创建模块23,可以通过创建多个处理进程进行异步处理,提升对缓存队列中的消息数据的处理速度。并且进一步的,通过上述读取模块25和上述写入模块27,建立与处理进程对应的临时文件,通过临时文件来控制各个处理进程所要处理的消息数据。
作为一个可选的实施例,在上述读取模块25中,可以通过识别消息数据所要写入数据库的数据表,将写入同一个数据表或者字段的消息数据,分配给同一个处理进程,通过该进程对消息数据进行顺序处理,从而避免数据库死锁的问题。
作为一个可选的实施例,在上述写入模块27中的临时文件,可以通过处理进程的名称和分配给处理进程的固定编号来决定,其中临时文件的格式可以是文本格式,XML格式,或者其他可被系统识别的格式。例如:处理进程的名称为test,分配给处理进程的编号为3。这样,产生的临时文件的命名格式如下{test_3.tmp},这样所产生的临时文件互不影响,系统自身也方便识别。
作为一个可选的实施例,在上述处理模块29中为处理进程中设置计数器,其中,上述处理模块29可以执行如下步骤:
步骤一,读取临时文件中的消息数据。
步骤二,通过处理进程对临时文件进行处理。
步骤三,当处理进程对临时文件处理完成后,删除临时文件,并对与处理进程对应的计数器做累加运算。
处理模块29通过上述步骤一至步骤三,处理进程读取与其对应的临时文件,对临时文件所包含的消息数据依次进行处理。在对临时文件内包含的所有消息数据进行处理后,删除该临时文件。并控制处理进程中设置的计数器做一次自增运算。通过计数器记录当前处理进程处理临时文件的次数。
作为一个可选的实施例,在当所述处理进程对所述临时文件处理完成后,删除所述临时文件,并对与所述处理进程对应的所述计数器做累加运算之后,可以包括:
步骤四,将计数器中的数值与预先设置的第一阈值进行比对。
步骤五,当计数器中的数值小于或等于第一阈值时,重复执行从缓存队列中读取预定数量的消息数据的步骤。
步骤六,当计数器中的数值大于第一阈值时,结束处理进程。
处理模块29通过上述步骤四至步骤六,对处理进程中的计数器的数值进行判断。通过将计数器中的数值与预先设置的阈值进行比对,判断该处理进程是否已经超过预先规定的最大处理次数。当该处理进程已经超过预先规定的最大处理次数时,结束该处理进程。通过上述方法,防止处理进程长时间处理数据过程中,出现内存泄露、诶村溢出等问题,降低处理进程发生错误而导致崩溃的几率。
作为一个可选的实施例,上述装置还可以通过监控进程重新建立一个新的处理进程,以取代被结束掉的处理进程。通过上述步骤,保证同时执行的处理进程的数量,保证处理效率。
作为一个可选的实施例,在使用分布式缓存系统时,系统中会有多个缓存队列。当缓存队列至少为两个的情况下,接收模块21可以执行如下步骤包括:
步骤a,接收消息数据。
步骤b,将消息数据随机存储至一个缓存队列中,并判断消息数据是否存储成功。
步骤c,当消息数据存储失败时,将消息数据存储至另一个缓存队列中。
步骤d,当消息数据存储失败的次数大于预先设置的第二阈值时,生成错误日志。
上述接收模块21中,对将接收到的消息数据存储至缓存队列中这一存储过程进行验证,验证该消息数据是否存储成功。如果存储不成功,则将该消息数据存储至其他缓存队列当中。进一步的,当对某一条消息数据随机存储至缓存序列中这一存储过程失败的次数多于预先设置的第二阈值时,说明该条消息数据存在问题。那么,根据该条消息数据生成错误日志。
作为一个可选的实施例,上述装置还可以通过监控进程对分布式缓存系统中的各个缓存队列进行监控。当某一缓存队列连续发生错误,并连续发生错误的次数超出预先设定的阈值时,针对该缓存队列生成错误日志。
作为一个可选的实施例,上述接收模块21在实际应用中,消息数据会先被随机写入memcacheq集群中的任意一台消息队列服务器memcacheq当中。如果写入失败,该条消息数据会被自动调整到另一台正常的可被写入的消息队列服务器memcacheq再次尝试写入。如果消息数据存储至消息队列服务器失败的次数超过预先设置的范围时,则将该消息日志写入错误日志中。
作为一个可选的实施例,上述装置还可以包括设置模块,用于对处理进程设置预定时长的休眠时间。每当处理进程在对一个临时文件中的消息数据处理完成后,使进程进入休眠状态。通过使处理进程自动休眠S秒,将提高处理进程的稳定性。
作为一个可选的实施例,如图3所示,上述装置还包括:第二创建模块241和监控模块243。
其中,第二创建模块241,用于创建监控进程,监控进程用于监控处理进程。监控模块243,用于监控进程监控处理进程执行对临时文件中的消息数据进行处理。
上述第二创建模块241和监控模块243,通过建立监控进程,监控处理进程对临时文件中的消息数据进行处理的过程,从而确定处理进程在处理数据的过程中,是否出现进程崩溃。
作为一个可选的实施例,如图4所示,上述监控模块243包括:子监测模块2431、第一子处理模块2433和第二子处理模块2435。
其中,子监测模块2431,用于当处理进程执行结束时,监控进程检测是否存在与处理进程对应的临时文件。第一子处理模块2433,用于当存在与处理进程对应的临时文件时,监控进程读取在临时文件中记录对临时文件的处理次数。第二子处理模块2435,用于监控进程调用处理进程对临时文件进行处理。
通过上述子监测模块2431、第一子处理模块2433和第二子处理模块2435,对处理进程的处理步骤进行监控,一旦发现处理进程结束时,监控进程会查看临时目录里是否有与该进程对应的临时文件。如果发现有与结束的处理进程对应的临时文件,说明该处理进程为非正常结束。
监控进程读取该临时文件的处理次数,并对处理次数的数值进行累加运算。当临时文件中的处理次数达到预先设定的最大次数的阈值时,则将该临时文件转移到错误日志文件夹中。当,临时文件中的处理次数未达到预先设定的最大次数的阈值时,监控进程调用另一个或者新的处理进程,对该临时文件进行处理。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、移动终端、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种队列处理方法,其特征在于,包括:
接收多个消息数据,写入缓存队列;
创建至少一个处理进程,所述处理进程用于处理所述消息数据;
从所述缓存队列中读取预定数量的所述消息数据;
将所述取预定数量的消息数据写入临时文件,其中,所述临时文件与所述处理进程相对应;
通过所述处理进程处理所述临时文件中的所述消息数据。
2.根据权利要求1所述的方法,其特征在于,在所述处理进程中设置计数器,其中,通过所述处理进程处理所述临时文件中的所述消息数据包括:
读取所述临时文件中的所述消息数据;
通过所述处理进程对所述临时文件进行处理;
当所述处理进程对所述临时文件处理完成后,删除所述临时文件,并对与所述处理进程对应的所述计数器做累加运算。
3.根据权利要求2所述的方法,其特征在于,在当所述处理进程对所述临时文件处理完成后,删除所述临时文件,并对与所述处理进程对应的所述计数器做累加运算之后,所述方法还包括:
将所述计数器中的数值与预先设置的第一阈值进行比对;
当所述计数器中的所述数值小于或等于所述第一阈值时,重复执行所述从所述缓存队列中读取预定数量的所述消息数据的步骤;
当所述计数器中的所述数值大于所述第一阈值时,结束所述处理进程。
4.根据权利要求1所述的方法,其特征在于,当所述缓存队列至少为两个的情况下,所述接收消息数据,写入缓存队列包括:
接收所述消息数据;
将所述消息数据随机存储至一个缓存队列中,并判断所述消息数据是否存储成功;
当所述消息数据存储失败时,将所述消息数据存储至另一个缓存队列中;
其中,当所述消息数据存储失败的次数大于预先设置的第二阈值时,生成错误日志。
5.根据权利要求1所述的方法,其特征在于,在通过所述处理进程处理所述临时文件中的所述消息数据之后,所述方法还包括:
对所述处理进程设置预定时长的休眠时间。
6.根据权利要求1所述的方法,其特征在于,在创建至少一个处理进程,所述处理进程用于处理所述消息数据之后,所述方法还包括:
创建监控进程,所述监控进程用于监控所述处理进程;
所述监控进程监控所述处理进程执行对所述临时文件中的所述消息数据进行处理。
7.根据权利要求6所述的方法,其特征在于,所述监控进程监控所述处理进程执行对所述临时文件中的所述消息数据进行处理包括:
当所述处理进程执行结束时,所述监控进程检测是否存在与所述处理进程对应的临时文件;
当存在与所述处理进程对应的临时文件时,所述监控进程读取在所述临时文件中记录对所述临时文件的处理次数;
所述监控进程调用所述处理进程对所述临时文件进行处理。
8.一种队列处理装置,其特征在于,包括:
接收模块,用于接收多个消息数据,写入缓存队列;
第一创建模块,用于创建至少一个处理进程,所述处理进程用于处理所述消息数据;
读取模块,用于从所述缓存队列中读取预定数量的所述消息数据;
写入模块,用于将所述取预定数量的消息数据写入临时文件,其中,所述临时文件与所述处理进程相对应;
处理模块,用于通过所述处理进程处理所述临时文件中的所述消息数据。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二创建模块,用于创建监控进程,所述监控进程用于监控所述处理进程;
监控模块,用于所述监控进程监控所述处理进程执行对所述临时文件中的所述消息数据进行处理。
10.根据权利要求9所述的装置,其特征在于,所述监控模块包括:
子监测模块,用于当所述处理进程执行结束时,所述监控进程检测是否存在与所述处理进程对应的临时文件;
第一子处理模块,用于当存在与所述处理进程对应的临时文件时,所述监控进程读取在所述临时文件中记录对所述临时文件的处理次数;
第二子处理模块,用于所述监控进程调用所述处理进程对所述临时文件进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510294128.8A CN104866602A (zh) | 2015-06-01 | 2015-06-01 | 队列处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510294128.8A CN104866602A (zh) | 2015-06-01 | 2015-06-01 | 队列处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104866602A true CN104866602A (zh) | 2015-08-26 |
Family
ID=53912428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510294128.8A Pending CN104866602A (zh) | 2015-06-01 | 2015-06-01 | 队列处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104866602A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105701257A (zh) * | 2016-03-31 | 2016-06-22 | 北京奇虎科技有限公司 | 数据处理方法和装置 |
CN105760236A (zh) * | 2016-05-13 | 2016-07-13 | 中国工商银行股份有限公司 | 一种分布式计算机集群下的数据采集方法及系统 |
CN106909464A (zh) * | 2015-12-22 | 2017-06-30 | 北京奇虎科技有限公司 | 一种信息同步方法及装置 |
CN106951488A (zh) * | 2017-03-14 | 2017-07-14 | 海尔优家智能科技(北京)有限公司 | 一种日志记录方法和装置 |
CN107357526A (zh) * | 2017-07-03 | 2017-11-17 | 北京京东尚科信息技术有限公司 | 用于处理网络数据的方法和装置、服务器和存储介质 |
CN109428901A (zh) * | 2017-08-22 | 2019-03-05 | 中国电信股份有限公司 | 消息处理方法以及消息处理装置 |
CN109614248A (zh) * | 2018-12-03 | 2019-04-12 | Oppo广东移动通信有限公司 | 消息压缩方法、装置、存储介质及终端设备 |
CN109726180A (zh) * | 2018-12-03 | 2019-05-07 | 北京春鸿科技有限公司 | 在无线存储物联网设备进行文件检索和监听的方法及装置 |
CN110377571A (zh) * | 2019-06-24 | 2019-10-25 | 苏州浪潮智能科技有限公司 | 一种违规日志处理方法、装置和计算机可读存储介质 |
CN110677468A (zh) * | 2019-09-23 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 消息处理方法、装置以及设备 |
CN110019197B (zh) * | 2017-09-28 | 2021-07-30 | 武汉斗鱼网络科技有限公司 | 一种数据写入的方法、装置、服务器及介质 |
CN117194549A (zh) * | 2023-11-07 | 2023-12-08 | 上海柯林布瑞信息技术有限公司 | 基于任务数据配置的数据传输方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101084490A (zh) * | 2004-03-31 | 2007-12-05 | 双子星移动科技公司 | 同步的消息队列 |
CN101295276A (zh) * | 2008-06-20 | 2008-10-29 | 中国科学院计算技术研究所 | 一种磁盘级数据备份系统和方法 |
US20120054445A1 (en) * | 2010-08-31 | 2012-03-01 | Oracle International Corporation | Method and system for inserting cache blocks |
CN103049317A (zh) * | 2013-01-10 | 2013-04-17 | 中国南方电网有限责任公司超高压输电公司 | 云环境下基于队列的高并发数据快速写入系统及方法 |
CN103853621A (zh) * | 2012-12-05 | 2014-06-11 | 腾讯科技(深圳)有限公司 | 一种跨进程交互方法及相关终端设备 |
-
2015
- 2015-06-01 CN CN201510294128.8A patent/CN104866602A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101084490A (zh) * | 2004-03-31 | 2007-12-05 | 双子星移动科技公司 | 同步的消息队列 |
CN101295276A (zh) * | 2008-06-20 | 2008-10-29 | 中国科学院计算技术研究所 | 一种磁盘级数据备份系统和方法 |
US20120054445A1 (en) * | 2010-08-31 | 2012-03-01 | Oracle International Corporation | Method and system for inserting cache blocks |
CN103853621A (zh) * | 2012-12-05 | 2014-06-11 | 腾讯科技(深圳)有限公司 | 一种跨进程交互方法及相关终端设备 |
CN103049317A (zh) * | 2013-01-10 | 2013-04-17 | 中国南方电网有限责任公司超高压输电公司 | 云环境下基于队列的高并发数据快速写入系统及方法 |
Non-Patent Citations (3)
Title |
---|
令晓明等: "一种磁盘历史数据库模型研究", 《计算机工程》 * |
张远: "达梦数据库数据字典设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
王玭茜: "三维空间数据引擎多级缓存管理技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106909464A (zh) * | 2015-12-22 | 2017-06-30 | 北京奇虎科技有限公司 | 一种信息同步方法及装置 |
CN105701257B (zh) * | 2016-03-31 | 2019-05-21 | 北京奇虎科技有限公司 | 数据处理方法和装置 |
CN105701257A (zh) * | 2016-03-31 | 2016-06-22 | 北京奇虎科技有限公司 | 数据处理方法和装置 |
CN105760236A (zh) * | 2016-05-13 | 2016-07-13 | 中国工商银行股份有限公司 | 一种分布式计算机集群下的数据采集方法及系统 |
CN106951488A (zh) * | 2017-03-14 | 2017-07-14 | 海尔优家智能科技(北京)有限公司 | 一种日志记录方法和装置 |
CN107357526A (zh) * | 2017-07-03 | 2017-11-17 | 北京京东尚科信息技术有限公司 | 用于处理网络数据的方法和装置、服务器和存储介质 |
CN107357526B (zh) * | 2017-07-03 | 2021-02-26 | 北京京东尚科信息技术有限公司 | 用于处理网络数据的方法和装置、服务器和存储介质 |
CN109428901A (zh) * | 2017-08-22 | 2019-03-05 | 中国电信股份有限公司 | 消息处理方法以及消息处理装置 |
CN109428901B (zh) * | 2017-08-22 | 2021-07-30 | 中国电信股份有限公司 | 消息处理方法以及消息处理装置 |
CN110019197B (zh) * | 2017-09-28 | 2021-07-30 | 武汉斗鱼网络科技有限公司 | 一种数据写入的方法、装置、服务器及介质 |
CN109614248A (zh) * | 2018-12-03 | 2019-04-12 | Oppo广东移动通信有限公司 | 消息压缩方法、装置、存储介质及终端设备 |
CN109726180A (zh) * | 2018-12-03 | 2019-05-07 | 北京春鸿科技有限公司 | 在无线存储物联网设备进行文件检索和监听的方法及装置 |
CN109726180B (zh) * | 2018-12-03 | 2021-03-16 | 北京春鸿科技有限公司 | 在无线存储物联网设备进行文件检索和监听的方法及装置 |
CN110377571A (zh) * | 2019-06-24 | 2019-10-25 | 苏州浪潮智能科技有限公司 | 一种违规日志处理方法、装置和计算机可读存储介质 |
CN110377571B (zh) * | 2019-06-24 | 2021-10-22 | 苏州浪潮智能科技有限公司 | 一种违规日志处理方法、装置和计算机可读存储介质 |
CN110677468A (zh) * | 2019-09-23 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 消息处理方法、装置以及设备 |
CN117194549A (zh) * | 2023-11-07 | 2023-12-08 | 上海柯林布瑞信息技术有限公司 | 基于任务数据配置的数据传输方法及装置 |
CN117194549B (zh) * | 2023-11-07 | 2024-01-26 | 上海柯林布瑞信息技术有限公司 | 基于任务数据配置的数据传输方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104866602A (zh) | 队列处理方法及装置 | |
CN107911249B (zh) | 一种网络设备的命令行发送方法、装置和设备 | |
CN102937995B (zh) | 一种交互信息处理方法及装置 | |
CN105205014A (zh) | 一种数据存储方法和装置 | |
CN105824846B (zh) | 数据迁移方法及装置 | |
CN107391325B (zh) | 一种硬盘的测试方法、装置及终端 | |
CN111291079A (zh) | 一种数据的查询方法和装置 | |
CN104216835A (zh) | 一种实现内存融合的方法及装置 | |
CN101790257A (zh) | 一种存储数据的方法和网管系统 | |
CN111414424B (zh) | 一种配置数据自动同步redis的方法、系统、介质及设备 | |
CN104657435A (zh) | 一种应用数据的存储管理方法和网络管理系统 | |
CN106155596A (zh) | 数据写入方法及装置 | |
CN106161189A (zh) | 即时通信的离线通信方法及装置 | |
CN108710547A (zh) | 一种数据备份方法、装置、终端及存储介质 | |
CN111930305A (zh) | 数据的存储方法和装置、存储介质、电子装置 | |
CN104539449A (zh) | 一种故障信息处理方法与相关装置 | |
CN105282206A (zh) | 网站资源文件的处理方法、装置和系统 | |
CN111274219B (zh) | 数据存储方法及装置、存储介质、电子装置 | |
CN110704198B (zh) | 数据操作方法、装置、存储介质以及处理器 | |
CN106708445A (zh) | 链路选择方法及装置 | |
CN103685165A (zh) | 一种业务处理方法及业务服务器 | |
CN107819595B (zh) | 一种网络切片管理装置 | |
CN108763498B (zh) | 用户身份识别方法、装置、电子设备及可读存储介质 | |
CN112817980A (zh) | 一种数据索引处理方法、装置、设备及存储介质 | |
CN113852919B (zh) | 预警消息的生成方法和装置、存储介质及电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate 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: 20150826 |