消息队列的批量消费方法、装置、设备及存储介质制造方法及图纸

技术编号:39032771 阅读:10 留言:0更新日期:2023-10-10 11:46
本发明专利技术涉及云存储及金融科技技术领域,揭露了一种用于交易订单处理场景的消息队列的批量消费方法、装置、设备及存储介质。所述方法包括:利用预构建的过滤器对目标客户集群产生的订单消息进行过滤得到待处理消息,将所述待处理消息顺序压入预构建的有界队列中;当检测到所述有界队列中出现消息时,加锁生成唯一性的单线程轮询任务;利用所述单线程轮询任务拉取所述有界队列中的最前消息,将所述最前消息存储至预构建的集合中,并根据基于所述集合饱和度的及所述单线程轮询任务的线程时间的轮询策略,将所述集合中的全部消息发送至预构建的线程池中进行消费。本发明专利技术可以在处理交易订单时,提高消息队列中消息被消费的效率及资源使用率。使用率。使用率。

【技术实现步骤摘要】
消息队列的批量消费方法、装置、设备及存储介质


[0001]本专利技术涉及云存储及金融科技
,尤其涉及一种用于交易订单处理场景的消息队列的批量消费方法、装置、设备及计算机可读存储介质。

技术介绍

[0002]金融机构、电商或其他企业,随着业务的发展,通过消息队列(MessageQueue,简称MQ)异步消费消息的数据量也总会越来越大,在促销活动时,总会产生消息高峰,如果消息消费的速度跟不上消息生产的速度,则会产生消息积压导致告警,严重的甚至导致消息丢失等等。
[0003]如今消息消费主要采用单条消费及批量消费两种方式。其中,单条消费,虽然可以通过增加机器资源来提升消费速度,但频繁连接数据库,给数据库造成巨大压力;而批量消费在消息高峰时,一次拉取的消息量会按照32条为一组拉取,效率尚可,而消息低峰时,会以[1

32]条消息为一组进行消费,使得批量消费不是很稳定,造成线程资源浪费。总之,在交易订单处理场景时,如今的消息消费方式都不能使得数据库资源被充分合理使用。

技术实现思路

[0004]本专利技术提供一种消息队列的批量消费方法、装置、设备及存储介质,其主要目的在于在处理交易订单时,提高消息队列中消息被消费的效率及资源使用率。
[0005]为实现上述目的,本专利技术提供的一种消息队列的批量消费方法,包括:
[0006]利用预构建的过滤器对目标客户集群产生的订单消息进行过滤,得到待处理消息,并将所述待处理消息顺序压入预构建的有界队列中;
[0007]根据预设埋点,当检测到所述有界队列中出现消息时,加锁生成唯一性的单线程轮询任务;
[0008]利用所述单线程轮询任务拉取所述有界队列中的最前消息,将所述最前消息存储至预构建的集合中,并根据基于所述集合饱和度的及所述单线程轮询任务的线程时间的轮询策略,将所述集合中的全部消息发送至预构建的线程池中进行消费。
[0009]可选的,所述根据基于所述集合饱和度的及所述单线程轮询任务的线程时间的轮询策略,将所述集合中的全部消息发送至预构建的线程池中进行消费,包括:
[0010]当所述集合未满且所述单线程轮询任务的线程时间未到期时,依次从所述有界队列中进行消息抓取;
[0011]当所述集合已满或所述单线程轮询任务的线程时间到期时,利用预构建的事件分派器将所述集合中的全部消息发送至预构建的线程池中进行消费,并返回上述依次从所述有界队列中进行消息抓取的步骤,生成新的集合;
[0012]当从所述有界队列中抓取不到消息时,开始记录单线程等待时间;
[0013]当所述单线程等待时间判定为超时时,利用预构建的事件分派器将所述集合中的全部消息发送至预构建的线程池中进行消费,并销毁所述单线程轮询任务。
[0014]可选的,所述利用预构建的过滤器对目标客户集群产生的订单消息进行过滤,得到待处理消息,包括:
[0015]对各个所述订单消息进行消息内容识别,并根据内容识别结果删除包含恶意消息的订单消息,得到有效订单消息;
[0016]识别每个所述有效订单消息中主要内容标签,并根据所述主要内容标签,识别各个有效订单消息对应的业务场景,并识别各个所述业务场景中符合预构建的目标业务场景的有效订单消息,作为待处理消息。
[0017]可选的,所述将所述集合中的全部消息发送至预构建的线程池中进行消费,包括:
[0018]识别所述线程池中的所述集合的待处理数量,并获取所述线程池实时的系统资源承受范围;
[0019]根据所述待处理数量及所述系统资源承受范围对所述线程池进行多线程动态分配。
[0020]可选的,所述利用预构建的过滤器对目标客户集群产生的订单消息进行过滤之前,所述方法还包括:
[0021]识别客户产生的交易订单信息中的唯一标识,利用预构建的缓存数据库对所述唯一标识进行消费记录,得到消费缓存;
[0022]利用所述消费缓存,判断所述交易订单信息是否已经被二次消费,并将没有被二次消费的交易订单信息进行批准,得到订单消息。
[0023]可选的,所述加锁生成唯一性的单线程轮询任务,包括:
[0024]获取预构建的互斥锁对象,并利用所述互斥锁对象对预构建的目标线程进行加锁操作;
[0025]当加锁成功后,检测是否存在预设的单线程轮询任务,若不存在所述历史单线程轮询任务,则生成单线程轮询任务。
[0026]可选的,所述利用预构建的事件分派器将所述集合中的全部消息发送至预构建的线程池中进行消费,包括:
[0027]利用预构建的事件分派器识别所述集合中各个消息对应的消息类型;
[0028]根据所述消息类型及预构建的事件分派策略,将所述各个消息分派到不同线程池中。
[0029]为了解决上述问题,本专利技术还提供一种消息队列的批量消费装置,所述装置包括:
[0030]消息队列构建模块,用于利用预构建的过滤器对目标客户集群产生的订单消息进行过滤,得到待处理消息,并将所述待处理消息顺序压入预构建的有界队列中;
[0031]单线程任务创建模块,用于根据预设埋点,当检测到所述有界队列中出现消息时,加锁生成唯一性的单线程轮询任务;
[0032]批量消费模块,用于利用所述单线程轮询任务拉取所述有界队列中的最前消息,将所述最前消息存储至预构建的集合中,并根据基于所述集合饱和度的及所述单线程轮询任务的线程时间的轮询策略,将所述集合中的全部消息发送至预构建的线程池中进行消费。
[0033]为了解决上述问题,本专利技术还提供一种电子设备,所述电子设备包括:
[0034]至少一个处理器;以及,
[0035]与所述至少一个处理器通信连接的存储器;其中,
[0036]所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述所述的消息队列的批量消费方法。
[0037]为了解决上述问题,本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个计算机程序,所述至少一个计算机程序被电子设备中的处理器执行以实现上述所述的消息队列的批量消费方法。
[0038]本专利技术实施例通过过滤器可以将恶意消息、无关消息进行过滤,得到有界队列,然后通过一个单线程轮询任务对所述有界队列进行拉取,然后根据轮询策略积攒得到所述集合,实现提升了批量消费的数量;其中,所述单线程轮询任务为加锁生成的,从而保证了对拉取到的消息的安全性及唯一性;而所述轮询策略基于所述集合饱和度的及所述单线程轮询任务的线程时间,在大批量消息场景下,可以减少对数据库和服务器资源的占用,避免频繁地进行I/O操作,在消息量少的情况下,释放线程,避免资源被占用浪费,从而使系统更加稳定。因此,本专利技术实施例提供的一种消息队列的批量消费方法、装置、设备及存储介质,能够在于处理交易订单时,提高消息队列中消息被消费的效率及资源使用率。
附图说明
[0039]图1为本专利技术一本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种消息队列的批量消费方法,其特征在于,所述方法包括:利用预构建的过滤器对目标客户集群产生的订单消息进行过滤,得到待处理消息,并将所述待处理消息顺序压入预构建的有界队列中;根据预设埋点,当检测到所述有界队列中出现消息时,加锁生成唯一性的单线程轮询任务;利用所述单线程轮询任务拉取所述有界队列中的最前消息,将所述最前消息存储至预构建的集合中,并根据基于所述集合饱和度的及所述单线程轮询任务的线程时间的轮询策略,将所述集合中的全部消息发送至预构建的线程池中进行消费。2.如权利要求1所述的消息队列的批量消费方法,其特征在于,所述根据基于所述集合饱和度的及所述单线程轮询任务的线程时间的轮询策略,将所述集合中的全部消息发送至预构建的线程池中进行消费,包括:当所述集合未满且所述单线程轮询任务的线程时间未到期时,依次从所述有界队列中进行消息抓取;当所述集合已满或所述单线程轮询任务的线程时间到期时,利用预构建的事件分派器将所述集合中的全部消息发送至预构建的线程池中进行消费,并返回上述依次从所述有界队列中进行消息抓取的步骤,生成新的集合;当从所述有界队列中抓取不到消息时,开始记录单线程等待时间;当所述单线程等待时间判定为超时时,利用预构建的事件分派器将所述集合中的全部消息发送至预构建的线程池中进行消费,并销毁所述单线程轮询任务。3.如权利要求1所述的消息队列的批量消费方法,其特征在于,所述利用预构建的过滤器对目标客户集群产生的订单消息进行过滤,得到待处理消息,包括:对各个所述订单消息进行消息内容识别,并根据内容识别结果删除包含恶意消息的订单消息,得到有效订单消息;识别每个所述有效订单消息中主要内容标签,并根据所述主要内容标签,识别各个有效订单消息对应的业务场景,并识别各个所述业务场景中符合预构建的目标业务场景的有效订单消息,作为待处理消息。4.如权利要求1所述的消息队列的批量消费方法,其特征在于,所述将所述集合中的全部消息发送至预构建的线程池中进行消费,包括:识别所述线程池中的所述集合的待处理数量,并获取所述线程池实时的系统资源承受范围;根据所述待处理数量及所述系统资源承受范围对所述线程池进行多线程动态分配。5.如权利要求1所述的消息队列的批量消费方法,...

【专利技术属性】
技术研发人员:周何圳
申请(专利权)人:中国平安财产保险股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1