一种系统间消息事件的同步方法、装置、设备及存储介质与流程

文档序号:16327045发布日期:2018-12-19 05:58阅读:131来源:国知局
一种系统间消息事件的同步方法、装置、设备及存储介质与流程

本发明涉及信息传输领域,特别涉及一种系统间消息事件的同步方法、装置、设备及计算机可读存储介质。

背景技术

在系统间的消息处理过程中,消息事件的同步是两个系统间状态同步、指令下发等功能实现的基础。在现有技术中,主系统根据预设周期时间向从系统发送获取指令,从而获取从系统上消息队列中的消息事件。但是,在此方法中,由于从系统的消息队列增加消息事件的时间和数量都是随机的,因此若设置的预设周期时间过长,将导致主系统获取从系统的消息事件不及时,使得从系统上消息事件的堆积,降低消息事件的处理效率;若预设周期时间过短,主系统频繁地向从系统发送获取指令,将占用大量的系统资源,导致系统不稳定。

因此,如何提供一种在保证系统稳定的前提下,能够及时高效地同步系统间消息事件的方法是本领域技术人员目前需要解决的技术问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种系统间消息事件的同步方法,能够在保证系统稳定的前提下,及时高效地同步系统间的消息事件;本发明的另一目的是提供一种系统间消息事件的同步装置、设备及计算机可读存储介质,均具有上述有益效果。

为解决上述技术问题,本发明提供一种系统间消息事件的同步方法,包括:

在根据预设周期时间向从系统发送获取指令的线程中,若检测到触发指令,则将当前的计时时间设置为所述预设周期时间;其中,所述计时时间是在发送所述获取指令后开始计时;

接收所述从系统根据所述获取指令获取的对应的消息事件。

优选地,所述触发指令具体包括检测到业务需求时生成的指令。

优选地,进一步包括:

预先分别设置主系统事件id和从系统事件id;

对应的,所述获取指令的生成方式具体包括:

根据所述业务需求向所述从系统发送包含所述主系统事件id或标识id的查询指令;

接收所述从系统根据所述主系统事件id或所述标识id判断出的对应类型的异常事件;

根据所述异常事件的类型生成对应的包含所述主系统事件id或所述标识id的所述获取指令。

优选地,所述接收所述从系统根据所述主系统事件id或所述标识id判断出的异常事件具体包括:

若所述查询指令包含所述标识id或所述查询指令包含所述主系统事件id且所述主系统事件id大于所述从系统事件id,则接收所述从系统发送的第一异常事件;

对应的,所述根据所述异常事件的类型生成对应的包含所述主系统事件id或所述标识id的所述获取指令具体为根据所述第一异常事件生成包含所述标识id的所述获取指令;

对应的,所述接收所述从系统根据所述获取指令获取的对应的消息事件具体为接收所述从系统根据所述标识id获取的当前全部消息事件;

若所述查询指令包含所述主系统事件id且所述主系统事件id小于所述从系统事件id,则接收所述从系统发送的第二异常事件;

对应的,所述根据所述异常事件的类型生成对应的包含所述主系统事件id或所述标识id的所述获取指令具体为根据所述第二异常事件生成包含所述主系统事件id的获取指令;

对应的,所述接收所述从系统根据所述获取指令获取的对应的消息事件具体为:

接收所述从系统根据所述从系统事件id与所述主系统事件id的差值获取的新增消息事件。

优选地,所述触发指令进一步包括接收到所述从系统发送的通知消息时生成的指令;

对应的,所述获取指令的生成方式具体为:

根据所述通知消息的性质生成对应的获取指令。

优选地,所述触发指令进一步包括接收到所述从系统中所述消息事件的数量达到预设的消息队列的长度阈值时的产生的指令;

对应的,所述获取指令的生成方式具体为:

根据预设规则生成获取所述从系统当前全部消息事件的获取指令。

优选地,在所述接收所述从系统根据所述获取指令获取的对应的消息事件之后进一步包括:

删除所述从系统的所述消息事件。

为解决上述技术问题,本发明还提供一种系统间消息事件的同步装置,包括:

发送模块,用于在根据预设周期时间向从系统发送获取指令的线程中,若检测到触发指令,则将当前的计时时间设置为所述预设周期时间;其中,所述计时时间是在发送所述获取指令后开始计时;

接收模块,用于接收所述从系统根据所述获取指令获取的对应的消息事件。

为解决上述技术问题,本发明还提供一种系统间消息事件的同步设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述任一种系统间消息事件的同步方法的步骤。

为解决上述技术问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种系统间消息事件的同步方法的步骤。

本发明提供的一种系统间消息事件的同步方法,相较于现有技术中只能根据预设周期时间获取从系统的消息事件的方法,本发明在根据预设周期时间向从系统发送获取指令的线程中,若检测到触发指令,则将在上一次发送获取指令之后开始计时的当前的计时时间设置为预设周期时间;接收从系统根据获取指令获取的对应的消息事件,可见,本发明通过在预设周期时间的基础上进一步根据触发指令发送获取指令,从而更及时地获取对应的消息事件,提高同步消息事件的效率;并且通过将检测到触发指令的当前的计时时间设置为预设周期时间,避免了频繁地发送获取指令,从而提高系统的稳定性。

为解决上述技术问题,本发明还提供了一种系统间消息事件的同步装置、设备及计算机可读存储介质,均具有上述有益效果。

附图说明

为了更清楚地说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例提供的一种系统间消息事件的同步方法的流程图;

图2为本发明实施例提供的另一种系统间消息事件的同步方法中获取指令的生成方式的流程图;

图3为本发明实施例提供的一种消息队列处理过程示意图;

图4为本发明实施例提供的一种系统间消息事件的同步装置的结构图;

图5为本发明实施例提供的一种系统间消息事件的同步设备的结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例的核心是提供一种系统间消息事件的同步方法,能够在保证系统稳定的前提下,及时高效地同步系统间的消息事件;本发明的另一核心是提供一种系统间消息事件的同步装置、设备及计算机可读存储介质,均具有上述有益效果。

为了使本领域技术人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

图1为本发明实施例提供的一种系统间消息事件的同步方法的流程图,如图1所示,一种系统间消息事件的同步方法包括:

s10:在根据预设周期时间向从系统发送获取指令的线程中,若检测到触发指令,则将当前的计时时间设置为预设周期时间;其中,计时时间是在发送获取指令后开始计时。

可以理解的是,系统间消息事件的同步是系统间实现状态同步、指令下发等功能的基础,因此系统间消息事件同步方法的优劣,对系统间功能的实现将产生直接的影响。在本实施例中,主系统根据预先设置的周期时间向从系统发送获取指令,并且在每次发送获取指令后开始新的计时,与此同时,也即在主系统的预设周期时间内,主系统检测当前是否存在触发指令,若检测到触发指令,则将当前的计时时间设置为预设周期时间,也即使得当前的计时时间达到发送获取指令的时间点。假设预设周期时间为5分钟,若在计时时间为3分钟时,主系统检测到触发指令,则将设置当前的计时时间为5分钟,从而使得主系统达到发送获取指令的时间,发送获取指令。可以理解的是,本实施例中的计时方式是从0开始计时,并累计到预设的周期时间,在其他的实施例中,计时方式也可以是预先设置周期时间,然后通过逐渐减少计时时间直至计时时间为0的方式,本实施例对此不做具体的限定。

需要说明的是,在发送获取指令之后,重新开始周期的计时时间,以便能多次获取从系统的消息事件。若在预设周期时间内没有检测到触发指令,则在计时时间达到预设周期时间时发送获取指令,以便根据预设周期时间获取从系统中对应的消息事件。

s20:接收从系统根据获取指令获取的对应的消息事件。

具体的,在主系统向从系统发送获取指令后,从系统根据该获取指令从自身的消息队列中获取与获取指令对应的消息事件,并将获取到的对应的消息事件返回给主系统。需要说明的是,预先设置获取指令中的设置参数,例如获取消息事件的时间或获取消息事件的大小或获取消息事件的数量等参数,然后通过获取指令的参数获取对应的消息事件。

本实施例中,从系统将对应的消息事件返回给主系统的具体方式为本领域技术人员的公知常识,故此处不再赘述。另外需要说明的是,本实施例中的主系统和从系统指的是进行异步信息传输的信息系统,为了在实施例的描述中区分信息的接收方与发送方,可以理解的是,信息系统中的发送方也可以是接收方,也即主系统与从系统的可以互相同步信息。另外,本实施例对主系统与从系统的数量不做限定,例如一个从系统可以将消息事件同步给多个主系统,或者一个主系统可以接收多个从系统的消息事件。

本发明实施例提供的一种系统间消息事件的同步方法,相较于现有技术中只能根据预设周期时间获取从系统的消息事件的方法,本发明在根据预设周期时间向从系统发送获取指令的线程中,若检测到触发指令,则将在上一次发送获取指令之后开始计时的当前的计时时间设置为预设周期时间;接收从系统根据获取指令获取的对应的消息事件,可见,本发明通过在预设周期时间的基础上进一步根据触发指令发送获取指令,从而更及时地获取对应的消息事件,提高同步消息事件的效率;并且通过将检测到触发指令的当前的计时时间设置为预设周期时间,避免了频繁地发送获取指令,从而提高系统的稳定性。

在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,触发指令具体包括检测到业务需求时生成的指令。

具体的,当主系统存在业务需求时,例如需要利用从系统中的消息事件进行如计算、存储等操作时,主系统在检测到存在业务需求时则生成触发指令以便于获取从系统的对应的消息事件。

在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,进一步包括:

预先分别设置主系统事件id和从系统事件id。

作为优选的实施方式,本实施例通过预先在从系统中设置消息队列,从系统在接收到消息事件后,将消息事件按照预设的顺序如时间顺序放入消息队列中,并根据消息队列的顺序为每个消息事件设置唯一对应的事件id,用于标识各个消息事件。一般的,在实际应用中,为了便于区分和计算,通常将id设置为数值依次递增的形式,然后将最新接收到的消息事件的事件id也即当前消息队列中数值最大的事件id设置为从系统事件id。在主系统获取从系统的消息事件后,主系统根据各事件id,将最新接收到的消息事件的事件id也即当前主系统中数值最大的事件id设置为主系统事件id。

可见,通过设置主系统事件id和从系统事件id,可以更直接地判断主系统消息事件的同步情况。

对应的,如图2所示,获取指令的生成方式具体包括:

s21:根据业务需求向从系统发送包含主系统事件id或标识id的查询指令。

具体的,在计时时间到达预设周期时间或者在检测到业务需求并生成触发指令之后,主系统向从系统发送查询指令,根据预设周期时间获取消息事件的形式或根据业务需求获取消息事件的形式,查询指令可以是包含主系统事件id或标识id。需要说明的是,标识id为预先设置的表示消息事件的范围的id,例如标识id可以为a或者设置为-1,对应表示从系统消息队列中当前全部消息事件,标识id也可以是表示某一类型的消息事件如带有标签的消息事件。

s22:接收从系统根据主系统事件id或标识id判断出的对应类型的异常事件。

需要说明的是,主系统将包含主系统事件id或标识id的查询指令发送给从系统,以便于从系统根据主系统事件id或标识id判断异常事件的类型并将对应类型的异常事件返回给主系统。具体的,从系统根据主系统事件id或标识id判断当前的查询指令对应的异常事件的类型,可以是通过判断id的类型的方式,也可以是通过比较id之间的大小关系的方式,本实施例对此不做具体的限定。

s23:根据异常事件的类型生成对应的包含主系统事件id或标识id的获取指令。

具体的,主系统在接收到异常事件后,将根据异常事件的类型生成对应的获取指令,以获取对应的消息事件。根据异常事件的类型不同,对应需要获取的消息事件的类型和数量都可能存在差异,因此,在本实施例中,根据异常事件的类型生成对应的包含主系统事件id或标识id的获取指令。

本实施例中,通过预先分别设置主系统事件id和从系统事件id,并利用主系统事件id和从系统事件id生成获取指令,使得主系统利用获取指令获取的消息事件更加准确。

在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,步骤“接收从系统根据主系统事件id或标识id判断出的异常事件”具体包括:

若查询指令包含标识id或查询指令包含主系统事件id且主系统事件id大于从系统事件id,则接收从系统发送的第一异常事件;

对应的,根据异常事件的类型生成对应的包含主系统事件id或标识id的获取指令具体为根据第一异常事件生成包含标识id的获取指令;

对应的,接收从系统根据获取指令获取的对应的消息事件具体为接收从系统根据标识id获取的当前全部消息事件。

具体的,从系统在判断出查询指令中包含的是标识id,或者查询指令包含的是主系统事件id但是该主系统事件id大于从系统事件id,将生成第一异常事件并发送给主系统。主系统在接收到该第一异常事件后,按照预设规则发送包含标识id的获取指令。由于标识id表示的是获取从系统上当前全部的消息事件,因此从系统根据包含标识id的获取指令,从自身的消息队列中获取全部消息事件并发送给主系统。

如图3所示的消息队列处理过程示意图,在一种具体实施中,从系统上的消息队列中消息事件的事件id为0~4,从系统事件id为4,主系统先使用包含有标识id的获取指令get(last=-1)获取从系统上消息队列中的全部消息事件events=0~4,并更新主系统事件id为4。在从系统接收到新的消息事件之后,若主系统事件id大于从系统事件id,从系统将产生一个“无效参数”的第一异常事件,当主系统收到该异常事件时,主系统在下次将使用包含有标识id的获取指令get(last=-1)获取从系统上消息队列中的全部消息事件。

若查询指令包含主系统事件id且主系统事件id小于从系统事件id,则接收从系统发送的第二异常事件;

对应的,根据异常事件的类型生成对应的包含主系统事件id或标识id的获取指令具体为根据第二异常事件生成包含主系统事件id的获取指令;

对应的,接收从系统根据获取指令获取的对应的消息事件具体为:

接收从系统根据从系统事件id与主系统事件id的差值获取的新增消息事件。

例如,假设从系统接收到新的消息事件之后,从系统消息事件id更新为7,主系统事件id仍为4,也即主系统事件id小于从系统事件id,则从系统发送“丢失事件”的第二异常事件,当主系统收到该第二异常事件时,主系统通过get方法发送包含所述主系统事件id的获取指令get(last=4),从系统根据从系统事件id与主系统事件id的差值计算新增的消息事件为5、6和7,从而从系统将events=5、6和7的消息事件发送给主系统,从而完成新增信息的同步。

可见,本实施例提供的系统间消息事件的同步方法,使得同步消息事件的方式更加准确。

在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,触发指令进一步包括接收到从系统发送的通知消息时生成的指令;

对应的,获取指令的生成方式具体为:

根据通知消息的性质生成对应的获取指令。

也就是说,触发指令也可以是主系统接收到从系统发送的通知消息时生成的指令。具体的,从系统根据消息队列中的消息事件的性质例如某些消息事件为紧急事件,需要尽快地同步到主系统,因此从系统在检测到该消息事件后,生成通知指令并发送给主系统,使得主系统对应生成触发指令。更具体的,可以将该消息事件的标签信息发送给主系统,或者是将该消息事件的时间或者其他的唯一标识信息发送给主系统,以便于主系统能够及时获取对应的消息事件。

需要说明的是,从系统可以将该通知信息放入消息队列中以便于主系统获取,或者通过直接传输的方式将该获通知信息发送给主系统,本实施例对此不做具体的限定。作为优选的实施方式,可以预先根据各消息事件的性质为消息事件设置标签,当从系统检测到带标签的消息事件时,则生成触发指令,这样能够尽快地生成触发指令,提高同步消息事件的及时性,提高消息事件的利用效率。

在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,触发指令进一步包括接收到从系统中消息事件的数量达到预设的消息队列的长度阈值时的产生的指令;

对应的,获取指令的生成方式具体为:

根据预设规则生成获取从系统当前全部消息事件的获取指令。

具体的,当从系统的消息事件已将消息队列占满,即消息事件的数量达到预设的消息队列的长度阈值,为了让主系统能够及时处理从系统的消息事件,作为优选的实施方式,本实施例通过丢失最先存储于从系统的消息队列中的消息事件,然后产生一个异常事件,主系统在获取到该异常事件之后,将产生一个带标识id的获取指令,以获取从系统消息队列中的当前全部消息事件。

需要说明的是,上述方式是在检测出消息事件的数量达到预设的消息队列的长度阈值的情况是偶然事件时实行的,若多次检测到消息事件的数量达到预设的消息队列的长度阈值的情况,则还可以通过调整预设周期时间的时长和增加消息队列长度阈值的方式来减少从系统中消息事件的数量达到预设的消息队列的长度阈值的情况。

本实施例通过在接收到从系统中消息事件的数量达到预设的消息队列的长度阈值时的产生的指令时获取从系统对应的消息事件,能够及时改善从系统消息队列中消息事件堆积的情况,提高系统的稳定性。

在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,在接收从系统根据获取指令获取的对应的消息事件之后进一步包括:

删除从系统的消息事件。

具体的,在主系统接收到从系统根据获取指令获取的对应的消息事件之后,删除从系统中已发送的消息事件。不仅能避免已发送的消息事件占用消息队列长度空间,还能避免在获取从系统的消息事件时重复发送消息事件,使得传输效率更高。

上文对于本发明提供的一种系统间消息事件的同步方法的实施例进行了详细的描述,本发明还提供了一种与该方法对应的系统间消息事件的同步装置、设备及计算机可读存储介质,由于装置、设备及计算机可读存储介质部分的实施例与方法部分的实施例相互照应,因此装置、设备及计算机可读存储介质部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

图4为本发明实施例提供的一种系统间消息事件的同步装置的结构图,如图4所示,一种系统间消息事件的同步装置包括:

发送模块41,用于在根据预设周期时间向从系统发送获取指令的线程中,若检测到触发指令,则将当前的计时时间设置为所述预设周期时间;其中,计时时间是在发送获取指令后开始计时。

接收模块42,用于接收所述从系统根据所述获取指令获取的对应的消息事件。

本发明提供的一种系统间消息事件的同步装置,相较于现有技术中只能根据预设周期时间获取从系统的消息事件的方法,本装置通过发送模块在根据预设周期时间向从系统发送获取指令的线程中,若检测到触发指令,则将在上一次发送获取指令之后开始计时的当前的计时时间设置为预设周期时间;并通过接收模块接收从系统根据获取指令获取的对应的消息事件,可见,本装置通过在预设周期时间的基础上进一步根据触发指令发送获取指令,从而更及时地获取对应的消息事件,提高同步消息事件的效率;并且通过将检测到触发指令的当前的计时时间设置为预设周期时间,避免了频繁地发送获取指令,从而提高系统的稳定性。

图5为本发明实施例提供的一种系统间消息事件的同步设备的结构图,如图5所示,一种系统间消息事件的同步设备包括:

存储器51,用于存储计算机程序;

处理器52,用于执行计算机程序时实现如上述系统间消息事件的同步方法的步骤。

本发明实施例提供的系统间消息事件的同步设备,具有上述系统间消息事件的同步方法的有益效果。

为解决上述技术问题,本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述系统间消息事件的同步方法的步骤。

本发明实施例提供的计算机可读存储介质,具有上述系统间消息事件的同步方法的有益效果。

以上对本发明所提供的系统间消息事件的同步的方法、装置、设备及计算机可读存储介质进行了详细介绍。本文中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1