一种任务消息的实现方法及实现该任务消息的任务系统的制作方法
【技术领域】
[0001]本发明涉及通信技术领域,尤其涉及一种任务消息的实现方法及实现该任务消息的任务系统。
【背景技术】
[0002]为了追求更高效的工作效率,目前在很多业务系统中都需要设定任务消息,以下以定时任务为例:如,推广系统期望在某个时间点去切换某个广告平台上投放的广告,以增加不同广告的曝光率,就需要在推广系统中设置定时任务,当定时任务到期时,推广系统切换广告平台中需要被投放的广告;又如,一个用户推荐了另一个用户注册某个网站,就可以设定一个定时任务,看看时间到了被推荐的用户有没有注册,如果没注册就给他推送一条短信过去;再如,每天凌晨时候,软件系统中定时分析一次前一天的日志信息等都需要定时任务。可以看出,定时任务不仅可以提高工作效率同时可以大大降低人力成本。
[0003]现在定时任务的实现方法有很多,如,在Linux环境下通常采用crontab技术执行定时任务,其从标准输入设备中读取指令,并将其存放与“crontab”文件中,以供之后读取和执行;又如,在java领域中采用Spring quartz技术处理定时任务,且通过配置文件进行定时任务的配置等。
[0004]但是,现有任务消息的实现都是与其他业务逻辑绑定在一起且将任务分成多个子任务来实现的,如,当需要修改定时任务时,首先需要将软件服务停止,对其源代码进行修改,随后再将修改好的软件系统重新部署至服务器。这样无疑提高了系统维护的风险及难度,且实现起来较为繁琐。
【发明内容】
[0005]针对上述问题,本发明提供了一种任务消息的实现方法及实现该任务消息的任务系统,其通过监控端实现定时任务的监控和处理,完全与原有系统解耦,易于维护和扩展。
[0006]本发明提供的技术方案如下:
[0007]—种任务消息的实现方法,所述任务消息的实现方法包括以下步骤:
[0008]SlO创建新频道;
[0009]S20在所述新频道中创建任务消息;
[0010]S30监听所述新频道中所有的任务消息;
[0011 ] S40根据预设关键字筛选所述新频道中被触发的任务消息;
[0012]S50解析筛选得到的被触发的任务消息中的第一参数字段,执行所述任务消息中包含的任务事件。
[0013]进一步优选地,在步骤SlO中,具体包括:
[0014]获取新频道的名称,并将所述新频道的名称与现有频道名称比较;若发现其与现有频道名称冲突,则报警;若与现有频道名称不冲突,则以该名称在数据库中创建新的频道。
[0015]进一步优选地,在步骤S20中,具体包括:
[0016]S21所述新频道接收任务消息;
[0017]S22将所述任务消息压缩成键,并设定所述任务消息对应的键名;
[0018]S23根据所述任务消息的类型设定触发所述任务消息的第二参数字段;
[0019]S24存储所述任务消息、所述任务消息对应的键名以及触发所述任务消息的第二参数字段。
[0020]进一步优选地,在步骤S30中具体包括:
[0021 ] S31订阅所述新频道;
[0022]S32监听所述新频道中是否有任务消息被触发,若没有,则继续监听;若有,跳转至步骤S40;
[0023]在步骤S40中具体包括:
[0024]S41接收所述数据库推送的与所述任务消息关联的任务触发消息,并根据预设关键字筛选与所述任务触发消息关联的任务消息。
[0025]进一步优选地,在步骤S20中,具体包括:
[0026]S211所述新频道接收定时任务;
[0027]S221将所述定时任务压缩成键,并设定所述定时任务对应的键名;
[0028]S231将所述定时任务的过期时间设定为触发所述定时任务的第二参数字段;
[0029]S241存储所述定时任务、所述定时任务对应的键名以及所述过期时间。
[0030]进一步优选地,在步骤S30中具体包括:
[0031 ] S311订阅所述新频道;
[0032]S321监听所述新频道中定时任务的过期时间是否到期,若没有,则继续监听;若有,推送与所述定时任务关联的过期信息;
[0033]在步骤S40中具体包括:
[0034]S42接收所述过期信息,并根据预设关键字筛选与所述过期信息关联的任务消息;
[0035]在步骤S50中具体包括:
[0036]解析筛选得到的被触发的定时任务中的第一参数字段,执行所述任务消息中包含的过期事件。
[0037]进一步优选地,在步骤S40中,所述预设关键字具体为:任务消息的类型和/或键名和/第一参数字段;
[0038]在步骤S50中,所述第一参数字段具体为标识所述任务事件的参数字段。
[0039]本发明还提供了一种用于实现任务消息的任务系统,所述任务系统中包括:数据库、监控端以及业务端,其中,所述数据库分别与所述监控端和所述业务端连接,所述业务端发布任务消息至所述数据库的新频道中;所述数据库接收所述任务消息并进行存储;所述监控端实时监控存储在所述数据库中的任务消息是否被触发,进而判断是否执行任务事件。
[0040]进一步优选地,在所述数据库中包括:
[0041]设定模块,用于在所述数据库中创建新的频道,以及用于设定接收到的任务消息对应的键名和根据所述任务消息的类型设定触发所述任务消息的第二参数字段;
[0042]第一信息接收模块,与所述业务端连接,用于接收所述业务端发送的所述任务消息;
[0043]压缩模块,与所述信息接收模块连接,将接收到的所述任务消息压缩成对应的键;
[0044]存储模块,分别与所述设定模块、所述信息接收模块以及所述压缩模块连接,所述存储模块用于存储所述任务消息、所述任务消息对应的键名以及触发所述任务消息的第二参数字段;
[0045]第一信息发送模块,分别与所述监控端和所述存储模块连接,用于发送任务触发消息至所述监控端;
[0046]所述监控端中包括:
[0047]第二信息接收模块,用于接收所述任务触发消息;
[0048]筛选模块,与所述第二信息接收模块连接,所述筛选模块用于根据预设关键字筛选与所述任务触发消息关联的任务消息;
[0049]解析模块,与所述筛选模块连接,所述解析模块解析经过筛选得到的任务消息中的第一参数字段;
[0050]任务执行模块,与所述解析模块,所述任务执行模块根据所述解析模块的解析结果执行其中包含的任务事件。
[0051]本发明提供的任务消息的实现方法及实现该任务消息的任务系统,能够带来以下有益效果:
[0052]在本发明中,通过在数据库中添加新频道,然后对该新频道中的所有信息进行监控,一旦该新频道中我们想要监控的某一任务消息被触发,则该监控端执行就根据数据库中发送的任务触发消息执行该任务消息中的任务事件,找到相对应的用户发送相应的消息等。相对于现有的任务消息,如定时任务的实现方法,本发明提供的方法不需要对源代码进行大量修改,只需在数据库中添加一个新频道并对其进行监控就能快速高效的实现发送任务的目的。即时用户不在线,也可以对该离线推送消息进行保留,待用户上线再发送出去。
[0053]再有,在本发明中,如果需要在任务系统中添加或者修改某一任务消息,如修改某一定时任务,只需要修改相对应的任务执行函数就行;且在一个具体实施例中我们使用node, js作为监控端对数据库中的新频道进行监控,使其与业务端完全解耦,整个系统易于维护和扩展。
【附图说明】
[0054]下面将以明确易懂的方式,结合【附图说明】优选实施方式,对上述特性、技术特征、优点及其实现方式予以进一步说明。
[0055]图1为本发明提供的任务消息的实现方法流程示意图;
[0056]图2为本发明提供的任务系统的结构示意图;
[0057]图3为本发明提供的数据库的结构示意图;
[0058]图4为本发明提供的监控端的结构示意图。
[0059]附图标号说明:
[0060]100-任务系统,110-数据库,120-监控端,130-业务端,121-设定模块,122-第一信息接收模块,123-压缩模块,124-存储模块,125-第一信息发送模块,131-第二信息接收模块,132-筛选模块,133-解析模块,134-任务执行模块。
【具体实施方式】
[0061]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照【附图说明】本发明的【具体实施方式】。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
[0062]我们知道,Node.js是一个基于Chrome