CN111104235B - 一种基于队列的业务请求异步处理方法及装置 - Google Patents
一种基于队列的业务请求异步处理方法及装置 Download PDFInfo
- Publication number
- CN111104235B CN111104235B CN201911248185.7A CN201911248185A CN111104235B CN 111104235 B CN111104235 B CN 111104235B CN 201911248185 A CN201911248185 A CN 201911248185A CN 111104235 B CN111104235 B CN 111104235B
- Authority
- CN
- China
- Prior art keywords
- message
- service
- queue
- service request
- processing
- 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
-
- 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
- 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
-
- 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/549—Remote execution
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 Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于队列的业务请求异步处理方法及装置,该方法包括:获取前台服务器接收到的业务请求,将业务请求以及与业务请求对应的处理信息按照预设的封装格式封装成消息;按照预设的延时机制对消息进行延时处理后,将延时后的消息存储至缓存中间件中;定时读取缓存中间件中到期的消息;根据业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理,并向前台服务器返回响应信息。本发明通过在对业务的异步处理,先返回响应后处理,降低业务的响应时间,同时避免系统超时异常,并且不同级别的消息走不同的队列,避免不重要的业务影响重要的业务,提升系统的性能和可靠性,同时降低系统的复杂度。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种基于队列的业务请求异步处理方法及装置。
背景技术
在分布式,大并发,高可用的服务商品销售的业务场景下,系统经常会遇到业务请求响应时间超时的问题。例如,有些业务请求的响应时间会超过500ms,这严重影响到了用户体验和系统的稳定性。尤其,在大促期间,在流量洪峰的时候,甚至会有部分请求因为超时而导致数据丢失,导致后续排查这类问题时定位困难,错误数据很难自愈。因此,亟需提出一种新的业务请求处理方法,来提高响应速度,使原始请求可回溯以及异常服务可自愈。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种基于队列的业务请求异步处理方法及装置,以克服现有技术中响应速度慢、业务之间相互影响以及业务出错原因难追溯等问题。
为解决上述一个或多个技术问题,本发明采用的技术方案是:
一方面,提供了一种基于队列的业务请求异步处理方法,该方法包括如下步骤:
获取前台服务器接收到的业务请求,将所述业务请求以及与所述业务请求对应的处理信息按照预设的封装格式封装成消息;
按照预设的延时机制对所述消息进行延时处理后,将延时后的消息存储至缓存中间件中;
定时读取所述缓存中间件中到期的消息;
根据所述业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理,并向所述前台服务器返回响应信息。
进一步的,所述将延时后的消息存储至缓存中间件中包括:
将同一时刻发出的所有业务请求对应的消息存储至缓存中间件中的同一集合中,并生成对应的消息列表,其中所述消息列表的key为所述消息对应的业务请求的发出时间,value为所述消息转换成的字符串;
获取所有的消息列表的key生成有序集合。
进一步的,所述定时读取所述缓存中间件中到期的消息包括:
定时遍历所述有序集合,获取所述有序集合中所有到期的key;
从所述缓存中间件中读取与所述到期的key对应的消息列表中的消息。
进一步的,所述消息队列至少包括专用队列和普通队列,所述根据所述业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理包括:
获取所述读取到消息对应的业务请求的业务对应的重要程度;
将所述重要程度与预设阈值进行比较,若所述重要程度大于所述预设阈值,则选取专用队列将读取到消息发送至对应的后台服务器,否则,选取普通队列将读取到消息发送至对应的后台服务器。
进一步的,所述方法还包括:
在将延时后的消息存储至缓存中间件中前,判断所述消息是否需要持久化,若需要,则将所述消息持久化到数据库中;
在根据所述业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理后,更新所述数据库中所述消息的状态。
另一方面,提供了一种基于队列的业务请求异步处理装置,所述装置包括:
数据封装模块,用于获取前台服务器接收到的业务请求,将所述业务请求以及与所述业务请求对应的处理信息按照预设的封装格式封装成消息;
延时处理模块,用于按照预设的延时机制对所述消息进行延时处理;
消息缓存模块,用于将延时后的消息存储至缓存中间件中;
消息读取模块,用于定时读取所述缓存中间件中到期的消息;
消息发送模块,用于根据所述业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理;
信息反馈模块,用于向所述前台服务器返回响应信息。
进一步的,所述消息缓存模块包括:
消息存储单元,用于将同一时刻发出的所有业务请求对应的消息存储至缓存中间件中的同一集合中;
列表生成单元,用于生成对应的消息列表,其中所述消息列表的key为所述消息对应的业务请求的发出时间,value为所述消息转换成的字符串;
集合生成单元,用于获取所有的消息列表的key生成有序集合。
进一步的,所述消息读取模块包括:
定时遍历单元,用于定时遍历所述有序集合,获取所述有序集合中所有到期的key;
消息读取单元,用于从所述缓存中间件中读取与所述到期的key对应的消息列表中的消息。
进一步的,所述消息发送模块包括:
数据获取单元,用于获取所述读取到消息对应的业务请求的业务类型对应的重要程度;
数据比较单元,用将所述重要程度与预设阈值进行比较;
消息发送单元,用于若所述重要程度大于所述预设阈值,则选取专用队列将读取到消息发送至对应的后台服务器,否则,选取普通队列将读取到消息发送至对应的后台服务器。
进一步的,所述装置还包括:
持久化判断模块,用于在将延时后的消息存储至缓存中间件中前,判断所述消息是否需要持久化;
消息持久化模块,用于则将所述消息持久化到数据库中;
数据更新模块,用于在根据所述业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理后,更新所述数据库中所述消息的状态。
本发明实施例提供的技术方案带来的有益效果是:
1、本发明实施例提供的基于队列的业务请求异步处理方法及装置,通过将接收到的业务请求以及与业务请求对应的处理信息封装成消息,将消息按照预设的延时机制处理后存储至缓存中间件中,定时读取缓存中间件中到期的消息,根据业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理,并向前台服务器返回响应信息,实现对业务的异步处理,先返回响应后处理,降低业务的响应时间,同时避免系统超时异常;
2、本发明实施例提供的基于队列的业务请求异步处理方法及装置,通过将消息对应的业务请求的业务对应的重要程度与预设阈值进行比较,若重要程度大于预设阈值,则选取专用队列将读取到消息发送至对应的后台服务器,否则,选取普通队列将读取到消息发送至对应的后台服务器,实现对消息进行分级,不同级别的消息走不同的队列,减小业务之间的相互影响,避免不重要的业务影响重要的业务,提升系统的性能和可靠性,同时降低系统的复杂度;
3、本发明实施例提供的基于队列的业务请求异步处理方法及装置,通过可配置的持久化策略以及重发机制,能够快速定位重要业务出错原因,保存业务原始数据,并且可以根据需要自动重发。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的应用环境示意图;
图2是根据一示例性实施例示出的基于队列的业务请求异步处理方法的流程图;
图3是根据一示例性实施例示出的将延时后的消息存储至缓存中间件中的流程图;
图4是根据一示例性实施例示出的定时读取所述缓存中间件中到期的消息的流程图;
图5是根据一示例性实施例示出的根据业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理的流程图;
图6是根据一示例性实施例示出的基于队列的业务请求异步处理装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是根据一示例性实施例示出的应用环境示意图,参照图1所示,本发明实施例中,从应用程序服务端的角度,提供了一种基于队列的业务请求异步处理方法,其中,用户通过客户端向前台服务器发出业务请求(如登录请求、创建订单请求等),消息服务器获取前台服务器接收到的业务请求后,将业务请求以及与业务请求对应的处理信息按照预设的封装格式封装成消息,采用统一延时处理机制,使用分布式中间件存储消息体,使用多个定时任务去定时读取缓存中间件中到期的消息,根据业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理,并向前台服务器返回响应信息。
下面对本申请实施例提供的具体实现方案进行详细介绍。
图2是根据一示例性实施例示出的基于队列的业务请求异步处理方法的流程图,参照图2所示,该方法包括如下步骤:
S1:获取前台服务器接收到的业务请求,将所述业务请求以及与所述业务请求对应的处理信息按照预设的封装格式封装成消息。
具体的,前台服务器接收用户通过客户端等设备向前台服务器发出的业务请求(如登录请求、创建订单请求等),消息服务器获取前台服务器接收到的业务请求,然后将业务请求以及与该业务请求对应的处理信息按照预设的封装格式封装成消息。其中,处理信息包括处理该业务所使用的执行类、执行方法等信息。这里需要说明的是,本发明实施例中,不对预设的封装格式做具体限制,用户可以根据实际需求进行自行设置。
本发明实施例中,消息体封装主要包括以下五个字段:消息类型标志、是否持久化、消息处理类的类名称、调用方法名称、入参(如Json格式字符串)。这里需要说明的是,将业务逻辑只在封装消息体和消息处理逻辑中出现,做到真正解耦,可以拓展满足各种业务的异步处理场景,实现横向扩容,有效解决高并发问题。
S2:按照预设的延时机制对所述消息进行延时处理后,将延时后的消息存储至缓存中间件中。
具体的,本发明实施例中,针对到期处理的业务,例如,创建订单时如果超过30分钟未支付需要取消订单等,采用统一延时处理机制。并且,使用分布式缓存中间件存储消息体,即将消息按照预设的延时机制进行延时处理后存储至缓存中间件中。这里需要说明的是,本发明实施例中,不对延时机制做具体的限制,用户可以根据实际需求进行设置。
S3:定时读取所述缓存中间件中到期的消息。
具体的,作为一种较优的示例,本发明实施例中,使用多个定时任务按照一定的时间间隔定时去缓存中读取到期的消息并发送,其中,这里的时间间隔可以根据用户的具体需求进行设置,如1秒钟等。
S4:根据所述业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理,并向所述前台服务器返回响应信息。
具体的,本发明实施例中,针对不同的异步处理的场景创建出不同的消息队列,在向后台服务器发送待处理的消息时,根据消息对应的业务请求的业务类型选取相应的消息队列,将相应的消息发送至对应的后台服务器进行异步处理,避免不重要的业务影响重要的业务,同时向前台服务器返回响应信息。这里需要说明的是,本发明实施例中,对业务进行异步处理,并采用先返回响应后处理的方式,避免系统超时异常。
图3是根据一示例性实施例示出的将延时后的消息存储至缓存中间件中的流程图,参照图3所示,作为一种较优的实施方式,本发明实施例中,所述将延时后的消息存储至缓存中间件中包括:
S201:将同一时刻发出的所有业务请求对应的消息存储至缓存中间件中的同一集合中,并生成对应的消息列表,其中所述消息列表的key为所述消息对应的业务请求的发出时间,value为所述消息转换成的字符串。
具体的,同一时刻发出的所有业务请求可以是同一秒内发出的所有业务请求,也可以是同一分钟内发出的所有业务请求,这里不做具体限制,用户可以根据实际需求进行设置。作为一种较优的示例,本发明实施例中,将同一秒内发出的所有业务请求放在同一集合内。消息列表中的数据采用(key,value)格式,具体在生成消息列表时,采用当前时间的毫秒数乘以100作为消息列表的key,将封装好的消息体按照设定的规则转换为字符串作为消息列表的value,这样一秒内的消息都会被放到同一列表里。
S202:获取所有的消息列表的key生成有序集合。
具体的,本发明实施例中,设置消息的缓存由一个列表(这里指消息列表)和一个有序集合共同组成。这里需要说明的是,该有序集合与上述存储消息的集合并不是统一集合。消息列表生成后,将所有消息列表的key全部存储至该有序集合中。将消息列表的key放入到有序集合中时,需先判断有序集合中是否存在当前消息列表的key,如果存在,则说明当前列表的key已经被放入到该有序集合中,不需要再进行处理,如果不存在,则将当前列表的key放入到有序集合中,分值就是当前毫秒数。其中,设置当有序集合中的数据去除后,会自动从消息列表中删除,所以可以并发发送消息。本发明实施例中,设置有序集合可以根据分值顺序遍历,可以保证消息被顺序执行。
图4是根据一示例性实施例示出的定时读取所述缓存中间件中到期的消息的流程图,参照图4所示,作为一种较优的实施方式,本发明实施例中,所述定时读取所述缓存中间件中到期的消息包括:
S301:定时遍历所述有序集合,获取所述有序集合中所有到期的key。
具体的,定时从缓存中间件中读取到期的消息时,可以定时遍历有序集合,获取有序集合中所有到期的key,如果有序集合中不存在到期的key,则不做处理。具体实施时,可以定时根据分值顺序遍历有序集合中的对象,把有序集合中的值拿出来,转换成时间,然后根据当前时间判断是否到期。这里需要说明的是,本发明实施例中,可以采用定时器对有序集合进行遍历,其中,定时器遍历有序集合是可以并行处理的,多个线程拿到到期的key,直接可以并行获取key对应的消息,可以大大提高系统吞吐量。
S302:从所述缓存中间件中读取与所述到期的key对应的消息列表中的消息。
具体的,当遍历到有序集合中有到期的key时,遍历key对应的消息列表中的消息,从缓存中间件中读取出来。这里需要说明的是,消息列表遍历完成后(即将列表中的消息全部读取出来后),还需要在有序集合中删除掉当前遍历过的那条记录(即到期的key),直到有序集合中没有到期的数据就结束本次任务执行。
图5是根据一示例性实施例示出的根据业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理的流程图,参照图5所示,作为一种较优的实施方式,本发明实施例中,所述消息队列至少包括专用队列和普通队列,所述根据所述业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理包括:
S401:获取所述读取到消息对应的业务请求的业务对应的重要程度。
具体的,本发明实施例中,按照业务请求对应的业务类型对消息进行分级处理,不同级别的消息采用不同的消息队列进行发送,主要有专用队列和普通队列两种。具体在进行消息级别划分时,可以根据业务对应的重要程度对消息进行划分。重要程度的计算方式(或判定方式)用户可以根据具体需求进行设置,这里不做限制。接收到业务请求后,可以根据业务请求对应的业务类型查询或计算该业务请求对应的复杂度。例如,可以设置客户的下单支付类的请求比较重要,使用专用队列,记录用户的登录记录不太重要,使用普通队列。
S402:将所述重要程度与预设阈值进行比较,若所述重要程度大于所述预设阈值,则选取专用队列将读取到消息发送至对应的后台服务器,否则,选取普通队列将读取到消息发送至对应的后台服务器。
具体的,本发明实施例中,会预先设置一个阈值,在获取到读取到消息对应的重要程度后,将该重要程度与预设阈值进行比较,若该重要程度大于该预设阈值,则选取专用队列将读取到消息发送至对应的后台服务器,否则,选取普通队列将读取到消息发送至对应的后台服务器。例如,可以将创建订单、支付这类的业务请求对应的消息使用专用队列进行发送,对于一些登陆异步处理、流量统计类的业务请求对应的消息使用普通队列进行发送。将不同类型的消息用不同的队列进行发送,可以减少业务之间的相互影响,尤其可以避免不重要的的业务影响重要的业务。
作为一种较优的实施方式,本发明实施例中,所述方法还包括:
在将延时后的消息存储至缓存中间件中前,判断所述消息是否需要持久化,若需要,则将所述消息持久化到数据库中。
具体的,本发明实施例中,消息在发送时可以配置持久化策略,具体实施时,可以在将延时后的消息存储至缓存中间件中前,先判断该消息是否需要持久化,若需要,则先将该消息持久化到数据库中,然后再将消息存储至缓存中间件中,若不需要,则直接将消息存储至缓存中间件中。
在根据所述业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理后,更新所述数据库中所述消息的状态。
具体的,对应的,若是该消息进行的持久化到数据库的操作,则在将该消息采用相应的消息队列发送至对应的后台服务器进行异步处理后,还需要更新数据库中该条消息的状态。
作为一种较优的实施方式,本发明实施例中,消息的发送还可以采用重发机制,如果消息配置为持久化和重发机制,则消息在发送时记录发送状态和次数并持久化到数据库中。重发的定时任务会检索错误消息,只要重发次数不超过上限,会使用重发队列自动重发消息。另外,在重新处理时,设置分布式系统多线程扫描表存在并发问题。具体实施时,采用在处理消息时添加一个分布式锁,只要数据加锁就直接结束,只有成功获取到锁的线程才回执行业务处理逻辑。
图6是根据一示例性实施例示出的基于队列的业务请求异步处理装置的结构示意图,参照图6所示,该装置包括:
数据封装模块,用于获取前台服务器接收到的业务请求,将所述业务请求以及与所述业务请求对应的处理信息按照预设的封装格式封装成消息;
延时处理模块,用于按照预设的延时机制对所述消息进行延时处理;
消息缓存模块,用于将延时后的消息存储至缓存中间件中;
消息读取模块,用于定时读取所述缓存中间件中到期的消息;
消息发送模块,用于根据所述业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理;
信息反馈模块,用于向所述前台服务器返回响应信息。
作为一种较优的实施方式,本发明实施例中,所述消息缓存模块包括:
消息存储单元,用于将同一时刻发出的所有业务请求对应的消息存储至缓存中间件中的同一集合中;
列表生成单元,用于生成对应的消息列表,其中所述消息列表的key为所述消息对应的业务请求的发出时间,value为所述消息转换成的字符串;
集合生成单元,用于获取所有的消息列表的key生成有序集合。
作为一种较优的实施方式,本发明实施例中,所述消息读取模块包括:
定时遍历单元,用于定时遍历所述有序集合,获取所述有序集合中所有到期的key;
消息读取单元,用于从所述缓存中间件中读取与所述到期的key对应的消息列表中的消息。
作为一种较优的实施方式,本发明实施例中,所述消息发送模块包括:
数据获取单元,用于获取所述读取到消息对应的业务请求的业务类型对应的重要程度;
数据比较单元,用将所述重要程度与预设阈值进行比较;
消息发送单元,用于若所述重要程度大于所述预设阈值,则选取专用队列将读取到消息发送至对应的后台服务器,否则,选取普通队列将读取到消息发送至对应的后台服务器。
作为一种较优的实施方式,本发明实施例中,所述装置还包括:
持久化判断模块,用于在将延时后的消息存储至缓存中间件中前,判断所述消息是否需要持久化;
消息持久化模块,用于则将所述消息持久化到数据库中;
数据更新模块,用于在根据所述业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理后,更新所述数据库中所述消息的状态。
综上所述,本发明实施例提供的技术方案带来的有益效果是:
1、本发明实施例提供的基于队列的业务请求异步处理方法及装置,通过将接收到的业务请求以及与业务请求对应的处理信息封装成消息,将消息按照预设的延时机制处理后存储至缓存中间件中,定时读取缓存中间件中到期的消息,根据业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理,并向前台服务器返回响应信息,实现对业务的异步处理,先返回响应后处理,降低业务的响应时间,同时避免系统超时异常;
2、本发明实施例提供的基于队列的业务请求异步处理方法及装置,通过将消息对应的业务请求的业务对应的重要程度与预设阈值进行比较,若重要程度大于预设阈值,则选取专用队列将读取到消息发送至对应的后台服务器,否则,选取普通队列将读取到消息发送至对应的后台服务器,实现对消息进行分级,不同级别的消息走不同的队列,减小业务之间的相互影响,避免不重要的业务影响重要的业务,提升系统的性能和可靠性,同时降低系统的复杂度;
3、本发明实施例提供的基于队列的业务请求异步处理方法及装置,通过可配置的持久化策略以及重发机制,能够快速定位重要业务出错原因,保存业务原始数据,并且可以根据需要自动重发。
需要说明的是:上述实施例提供的基于队列的业务请求异步处理装置在触发业务请求异步处理业务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于队列的业务请求异步处理装置与基于队列的业务请求异步处理方法实施例属于同一构思,即该装置是基于该基于队列的业务请求异步处理方法的,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种基于队列的业务请求异步处理方法,其特征在于,所述方法包括如下步骤:
获取前台服务器接收到的业务请求,将所述业务请求以及与所述业务请求对应的处理信息按照预设的封装格式封装成消息;
按照预设的延时机制对所述消息进行延时处理后,将延时后的消息存储至缓存中间件中;
定时读取所述缓存中间件中到期的消息;
根据所述业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理,并向所述前台服务器返回响应信息;
其中,所述将延时后的消息存储至缓存中间件中包括:
将同一时刻发出的所有业务请求对应的消息存储至缓存中间件中的同一集合中,并生成对应的消息列表,其中所述消息列表的key为所述消息对应的业务请求的发出时间,value为所述消息转换成的字符串;
获取所有的消息列表的key生成有序集合;
所述定时读取所述缓存中间件中到期的消息包括:
定时遍历所述有序集合,获取所述有序集合中所有到期的key;
从所述缓存中间件中读取与所述到期的key对应的消息列表中的消息;
其中,采用定时器并行遍历所述有序集合,通过多个线程获取所有到期的key。
2.根据权利要求1所述的基于队列的业务请求异步处理方法,其特征在于,所述消息队列至少包括专用队列和普通队列,所述根据所述业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理包括:
获取所述读取到消息对应的业务请求的业务对应的重要程度;
将所述重要程度与预设阈值进行比较,若所述重要程度大于所述预设阈值,则选取专用队列将读取到消息发送至对应的后台服务器,否则,选取普通队列将读取到消息发送至对应的后台服务器。
3.根据权利要求1所述的基于队列的业务请求异步处理方法,其特征在于,所述方法还包括:
在将延时后的消息存储至缓存中间件中前,判断所述消息是否需要持久化,若需要,则将所述消息持久化到数据库中;
在根据所述业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理后,更新所述数据库中所述消息的状态。
4.一种基于队列的业务请求异步处理装置,其特征在于,所述装置包括:
数据封装模块,用于获取前台服务器接收到的业务请求,将所述业务请求以及与所述业务请求对应的处理信息按照预设的封装格式封装成消息;
延时处理模块,用于按照预设的延时机制对所述消息进行延时处理;
消息缓存模块,用于将延时后的消息存储至缓存中间件中;
消息读取模块,用于定时读取所述缓存中间件中到期的消息;
消息发送模块,用于根据所述业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理;
信息反馈模块,用于向所述前台服务器返回响应信息;
其中,所述消息缓存模块包括:
消息存储单元,用于将同一时刻发出的所有业务请求对应的消息存储至缓存中间件中的同一集合中;
列表生成单元,用于生成对应的消息列表,其中所述消息列表的key为所述消息对应的业务请求的发出时间,value为所述消息转换成的字符串;
集合生成单元,用于获取所有的消息列表的key生成有序集合;
所述消息读取模块包括:
定时遍历单元,用于定时遍历所述有序集合,获取所述有序集合中所有到期的key;
消息读取单元,用于从所述缓存中间件中读取与所述到期的key对应的消息列表中的消息;
其中,所述定时遍历单元还用于采用定时器并行遍历所述有序集合,通过多个线程获取所有到期的key。
5.根据权利要求4所述的基于队列的业务请求异步处理装置,其特征在于,所述消息发送模块包括:
数据获取单元,用于获取所述读取到消息对应的业务请求的业务类型对应的重要程度;
数据比较单元,用将所述重要程度与预设阈值进行比较;
消息发送单元,用于若所述重要程度大于所述预设阈值,则选取专用队列将读取到消息发送至对应的后台服务器,否则,选取普通队列将读取到消息发送至对应的后台服务器。
6.根据权利要求4所述的基于队列的业务请求异步处理装置,其特征在于,所述装置还包括:
持久化判断模块,用于在将延时后的消息存储至缓存中间件中前,判断所述消息是否需要持久化;
消息持久化模块,用于则将所述消息持久化到数据库中;
数据更新模块,用于在根据所述业务请求的业务类型选取相应的消息队列将读取到消息发送至对应的后台服务器进行异步处理后,更新所述数据库中所述消息的状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911248185.7A CN111104235B (zh) | 2019-12-06 | 2019-12-06 | 一种基于队列的业务请求异步处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911248185.7A CN111104235B (zh) | 2019-12-06 | 2019-12-06 | 一种基于队列的业务请求异步处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111104235A CN111104235A (zh) | 2020-05-05 |
CN111104235B true CN111104235B (zh) | 2022-09-09 |
Family
ID=70422146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911248185.7A Active CN111104235B (zh) | 2019-12-06 | 2019-12-06 | 一种基于队列的业务请求异步处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111104235B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626176A (zh) * | 2020-05-08 | 2021-11-09 | 北京沃东天骏信息技术有限公司 | 一种业务请求处理方法及装置 |
CN112131496B (zh) * | 2020-09-15 | 2024-04-12 | 北京值得买科技股份有限公司 | 网页投票数据处理方法、装置以及设备 |
CN112596882A (zh) * | 2020-12-25 | 2021-04-02 | 上海悦易网络信息技术有限公司 | 一种延时任务调度的方法、设备及系统 |
CN113051089A (zh) * | 2021-04-01 | 2021-06-29 | 深圳市特游网文化技术有限公司 | 一种结合workerman的计划任务消息队列php实现方法 |
CN113641760A (zh) * | 2021-08-16 | 2021-11-12 | 付睿智 | 数据同步方法及装置 |
CN113836184A (zh) * | 2021-09-18 | 2021-12-24 | 深圳前海微众银行股份有限公司 | 一种业务持久化方法及装置 |
CN114221885A (zh) * | 2021-12-07 | 2022-03-22 | 深圳市链融科技股份有限公司 | 消息异步处理方法、装置、计算机设备及存储介质 |
CN114553956B (zh) * | 2022-01-04 | 2024-01-09 | 北京国电通网络技术有限公司 | 基于uep中间件的数据传输方法和系统 |
CN116094651B (zh) * | 2022-10-31 | 2024-05-14 | 中国电信股份有限公司 | 消息重试方法、系统、电子设备及存储介质 |
CN115767448A (zh) * | 2022-12-07 | 2023-03-07 | 京东科技信息技术有限公司 | 一种消息发送方法、装置、设备和存储介质 |
CN117453422B (zh) * | 2023-12-22 | 2024-03-01 | 南京研利科技有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107093138B (zh) * | 2017-04-21 | 2019-04-30 | 山东佳联电子商务有限公司 | 基于分布式无阻塞异步消息处理模式的拍卖竞价系统及其运行方法 |
CN109672627A (zh) * | 2018-09-26 | 2019-04-23 | 深圳壹账通智能科技有限公司 | 基于集群服务器的业务处理方法、平台、设备及存储介质 |
-
2019
- 2019-12-06 CN CN201911248185.7A patent/CN111104235B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111104235A (zh) | 2020-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111104235B (zh) | 一种基于队列的业务请求异步处理方法及装置 | |
US10439937B2 (en) | Service addressing in distributed environment | |
US7779418B2 (en) | Publisher flow control and bounded guaranteed delivery for message queues | |
CN110968586B (zh) | 分布式事务处理方法及装置 | |
CN104601696B (zh) | 服务处理方法、服务调用系统、装置和系统 | |
EP2898655B1 (en) | System and method for small batching processing of usage requests | |
CN107783842B (zh) | 一种分布式锁实现方法、设备及存储装置 | |
CN103312624A (zh) | 一种消息队列服务系统和方法 | |
KR101612682B1 (ko) | 분산 및 병렬 환경에서 비동기 메시지를 시퀀싱하는 방법, 시스템 및 컴퓨터 프로그램 제품 | |
CN111949497B (zh) | 消息队列系统以及基于消息队列系统的消息处理方法 | |
US20150019620A1 (en) | High availability for communications based on remote procedure calls | |
US20030158883A1 (en) | Message processing | |
CN105162879A (zh) | 实现多机房数据一致性的方法、装置及系统 | |
US20200236165A1 (en) | System and method for synchronization of media objects between devices operating in a multiroom system | |
CN116633875B (zh) | 一种多业务耦合并发通信的时间保序调度方法 | |
CN112632093A (zh) | 工单处理方法、设备、系统、存储介质及程序产品 | |
CN109062717A (zh) | 数据缓存及缓存容灾方法和系统、缓存系统 | |
CN108241616B (zh) | 消息推送方法和装置 | |
CN108121580B (zh) | 应用程序通知服务的实现方法及装置 | |
CN110008681A (zh) | 访问控制方法、设备及系统 | |
CN110290215B (zh) | 一种信号传输方法及装置 | |
CN114500416A (zh) | 用于最多一次消息投递的投递方法和投递系统 | |
CN109039732B (zh) | 消息处理系统及消息处理方法 | |
CN109783215A (zh) | 异常任务处理方法及相关装置 | |
US9674282B2 (en) | Synchronizing SLM statuses of a plurality of appliances in a cluster |
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 |