[发明专利]一种基于消息队列系统的延时任务触发方法和装置有效
申请号: | 201710347968.5 | 申请日: | 2017-05-17 |
公开(公告)号: | CN107391271B | 公开(公告)日: | 2020-10-20 |
发明(设计)人: | 林育智 | 申请(专利权)人: | 创新先进技术有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 陈蕾;靳玫 |
地址: | 开曼群岛大开曼岛*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 消息 队列 系统 延时 任务 触发 方法 装置 | ||
本公开提供一种基于消息队列系统的延时任务触发方法和装置,其中方法包括:作为生产者的消息队列客户端生产对应延时任务的消息,所述消息中包括触发所述延时任务所需的任务信息;所述作为生产者的消息队列客户端将各个消息发送至所述消息队列,所述各个消息在消息队列中按照超时时间顺序排列,并且同一消息队列的各个消息对应的延时任务的延迟时间相同;所述消息队列将所述各个消息依照排列顺序发送至作为消费者的消息队列客户端,由所述消费者的消息队列客户端依序在消息到达超时时间,根据所述任务信息触发对应的延时任务。本公开降低了延时任务的触发时延和成本。
技术领域
本公开涉及计算机技术领域,特别涉及一种基于消息队列系统的延时任务触发方法和装置。
背景技术
有一种类型的业务需求如下:以转账业务为例,转账业务估计三分钟后到账,每一笔转账发生三分钟后对该笔业务进行检查是否到账,如果没到账则告警。上述对转账业务是否到账的查询就是一种延时任务,即转账发生一段时间(例如,三分钟)后再去查询是否到账,而不是立刻查询。为了在延时任务到达超时时间后实现对延时任务的触发,当前主流的实现方式可以是每发生一笔转账,则把相应信息写入database(数据库),由定时器定期扫描数据库,例如每10秒扫描一次,对于到达超时时间的转账业务,定时器再去查询该笔转账是否到账;如果没到账则通过告警中心告警。
但是上述这种触发延时任务的方式存在很多缺点,首先,数据库的实现成本较高;其次,定时器间隔固定的时间去扫描数据库,间隔时间如果偏小,则对数据库的性能提出更高要求(查询次数更多),而如果间隔时间偏大,则延后发现满足条件数据的时机,造成延时任务触发的延迟。再次,无效的扫描次数多,浪费机器性能,比如,假如3分钟后数据满足条件,10秒扫一次,那么在数据满足条件前,数据会被读取60秒*3/10秒=18次。
发明内容
有鉴于此,本公开提供一种基于消息队列系统的延时任务触发方法和装置,以降低延时任务触发的实现成本和触发时延。
具体地,本公开是通过如下技术方案实现的:
第一方面,提供一种基于消息队列系统的延时任务触发方法,该方法包括:
作为生产者的消息队列客户端生产对应延时任务的消息,所述消息中包括触发所述延时任务所需的任务信息;
所述作为生产者的消息队列客户端将各个消息发送至所述消息队列,所述各个消息在消息队列中按照超时时间顺序排列,并且同一消息队列的各个消息对应的延时任务的延迟时间相同;
所述消息队列将所述各个消息依照排列顺序发送至作为消费者的消息队列客户端,由所述消费者的消息队列客户端依序在消息到达超时时间,根据所述任务信息触发对应的延时任务。
第二方面,提供一种消息队列系统,所述系统包括:消息队列服务端和消息队列客户端,消息队列客户端包括分别作为生产者和消费者的消息队列客户端,所述消息队列服务端包括用于在生产者和消费者之间传输消息的消息队列;
所述作为生产者的消息队列客户端,用于生产对应延时任务的消息,所述消息中包括触发所述延时任务所需的任务信息;
所述消息队列服务端,用于接收所述作为生产者的消息队列客户端发送的各个延时任务的消息,并将消息存储至消息队列,所述各个消息在消息队列中按照超时时间顺序排列,并且同一消息队列的各个消息对应的延时任务的延迟时间相同;
所述作为消费者的消息队列客户端,用于接收所述消息队列依照排列顺序发送的各个消息,并依序在消息到达超时时间,触发对应的延时任务。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于创新先进技术有限公司,未经创新先进技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710347968.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:高性能无锁可缩放目标的系统和方法
- 下一篇:多进程数据交互的方法和终端