CN107729161B - 信息通知方法、系统、设备及计算机可读存储介质 - Google Patents
信息通知方法、系统、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN107729161B CN107729161B CN201710913888.1A CN201710913888A CN107729161B CN 107729161 B CN107729161 B CN 107729161B CN 201710913888 A CN201710913888 A CN 201710913888A CN 107729161 B CN107729161 B CN 107729161B
- Authority
- CN
- China
- Prior art keywords
- publisher
- callback
- subscriber
- trigger event
- loaded
- 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/542—Event management; Broadcasting; Multicasting; Notifications
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于观察者模式的信息通知方法、系统、设备及计算机可读存储介质,该基于观察者模式的信息通知方法包括:发布者接收所有订阅者的订阅信息,并基于所述订阅信息获取触发事件和回调方法;发布者基于预设规则加载所有订阅者的回调方法;当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法,以生成回调指令;发布者将所述回调指令发送至对应的订阅者。本发明节省了加载回调方法的时间,提升了系统功能模块的数据处理速度,进而提高系统的运行效率。
Description
技术领域
本发明涉及信息通知技术领域,尤其涉及一种基于观察者模式的信息通知方法、系统、设备及计算机可读存储介质。
背景技术
随着信息技术的快速发展,大型系统的开发项目越来越多地呈现出数据功能相互集成相互影响的趋势。系统项目中不同模块之间为维持其正常运行,会通过订阅其他模块的实时的数据变化来调整自身的功能。
目前的系统软件设计中通常采用观察者模式来实现数据流的交互,将不同模块分为发布者和订阅者,订阅者订阅发布者,在发布者检测到数据变化时,加载预留在发布者中的回调方法以通知到订阅者。
但是,发布者在加载回调方法时会耗费一定的时间,在大型系统的开发项目中,当发布者加载回调方法较多时,所耗费的时间时非常多的。这将大大影响对数据变化极为敏感的订阅者的调整流程,从而拖慢系统的响应速度,降低系统功能模块的数据处理速度,使得系统的运行效率降低。
发明内容
本发明的主要目的在于提供一种基于观察者模式的信息通知方法、系统、设备及计算机可读存储介质,旨在解决系统功能模块之间的信息通知不及时导致系统公允性效率低下的技术问题。
为实现上述目的,本发明实施例提供一种基于观察者模式的信息通知方法,所述观察者模式中设置有发布者和订阅者,所述基于观察者模式的信息通知方法包括:
发布者接收所有订阅者的订阅信息,并基于所述订阅信息获取触发事件和回调方法;
发布者基于预设规则加载所有订阅者的回调方法;
当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法,以生成回调指令;
发布者将所述回调指令发送至对应的订阅者。
优选地,所述当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法的步骤包括:
当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法;
发布者基于回调方法的数据采集指令采集触发事件中的目标数据;
发布者基于回调方法和目标数据生成回调指令。
优选地,所述发布者基于预设规则加载所有订阅者的回调方法的步骤还包括:
当发布者检测到待加载的回调方法的数量大于第一阈值时,将所有待加载的回调方法进行异步加载。
优选地,所述发布者基于预设规则加载所有订阅者的回调方法的步骤之后还包括:
发布者调用订阅者的回调方法,生成测试指令,并将测试指令发送至对应的订阅者,以测试回调方法的可用性;
当发布者接收到订阅者基于回调指令反馈的测试送达指令时,执行检测触发事件的步骤;
当发布者在第一时间内未接收到订阅者基于测试指令反馈的测试送达指令时,输出订阅失败的提示信息。
优选地,所述发布者将所述回调指令发送至对应的订阅者的步骤之后还包括:
当发布者接收到订阅者基于回调指令反馈的回调送达指令时,重新加载所述订阅者的回调方法,以待后续检测到触发事件时进行调用。
优选地,所述发布者将所述回调指令发送至对应的订阅者的步骤之后还包括:
当发布者在第二时间内未接收到订阅者基于回调指令反馈的回调送达指令时,重新执行调用所述订阅者的回调方法,直至接收到所述回调送达指令。
优选地,所述基于观察者模式的信息通知方法还包括:
当发布者检测到订阅者撤销订阅信息时,释放所述订阅者已加载的回调方法,并注销所述订阅者的订阅信息。
本发明还提供一种信息通知系统,所述信息通知系统包括:
获取模块,用于发布者接收所有订阅者的订阅信息,并基于所述订阅信息获取触发事件和回调方法;
加载模块,用于发布者基于预设规则加载所有订阅者的回调方法;
调用模块,用于当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法,以生成回调指令;
发送模块,用于发布者将回调指令发送至对应的订阅者。
此外,为实现上述目的,本发明还提供一种信息通知设备,所述信息通知设备包括:存储器、处理器,通信总线以及存储在所述存储器上的信息通知程序,
所述通信总线用于实现处理器与存储器间的通信连接;
所述处理器用于执行所述信息通知程序,以实现以下步骤:
发布者接收所有订阅者的订阅信息,并基于所述订阅信息获取触发事件和回调方法;
发布者基于预设规则加载所有订阅者的回调方法;
当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法,以生成回调指令;
发布者将所述回调指令发送至对应的订阅者。
优选地,所述当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法的步骤包括:
当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法;
发布者基于回调方法的数据采集指令采集触发事件中的目标数据;
发布者基于回调方法和目标数据生成回调指令。
优选地,所述发布者基于预设规则加载所有订阅者的回调方法的步骤还包括:
当发布者检测到待加载的回调方法的数量大于第一阈值时,将所有待加载的回调方法进行异步加载。
优选地,所述发布者基于预设规则加载所有订阅者的回调方法的步骤之后还包括:
发布者调用订阅者的回调方法,生成测试指令,并将测试指令发送至对应的订阅者,以测试回调方法的可用性;
当发布者接收到订阅者基于回调指令反馈的测试送达指令时,执行检测触发事件的步骤;
当发布者在第一时间内未接收到订阅者基于测试指令反馈的测试送达指令时,输出订阅失败的提示信息。
优选地,所述发布者将所述回调指令发送至对应的订阅者的步骤之后还包括:
当发布者接收到订阅者基于回调指令反馈的回调送达指令时,重新加载所述订阅者的回调方法,以待后续检测到触发事件时进行调用。
优选地,所述发布者将所述回调指令发送至对应的订阅者的步骤之后还包括:
当发布者在第二时间内未接收到订阅者基于回调指令反馈的回调送达指令时,重新执行调用所述订阅者的回调方法,直至接收到所述回调送达指令。
优选地,所述基于观察者模式的信息通知方法还包括:
当发布者检测到订阅者撤销订阅信息时,释放所述订阅者已加载的回调方法,并注销所述订阅者的订阅信息。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序可被一个或者一个以上的处理器执行以用于:
发布者接收所有订阅者的订阅信息,并基于所述订阅信息获取触发事件和回调方法;
发布者基于预设规则加载所有订阅者的回调方法;
当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法,以生成回调指令;
发布者将所述回调指令发送至对应的订阅者。
本发明的技术方案中,首先发布者接收所有订阅者的订阅信息,并基于所述订阅信息获取触发事件和回调方法;然后发布者基于预设规则加载所有订阅者的回调方法;接着当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法,以生成回调指令;最后发布者将所述回调指令发送至对应的订阅者。本发明通过调整观察者模式中发布者的检测加载流程,以预加载形式将将发布者中的回调方法加载在内存中,在需要调用的时候直接调取,而不用临时调用加载相关回调方法,从而节省了加载回调方法的时间,提升了系统功能模块的数据处理速度,进而提高系统的运行效率,达到省性能,省时间,高效率的目的。
附图说明
图1为本发明基于观察者模式的信息通知方法第一实施例的流程示意图;
图2为本发明基于观察者模式的信息通知方法第二实施例的流程示意图;
图3为本发明信息通知系统的装置示意图;
图4为本发明基于观察者模式的信息通知方法一系统设计图;
图5为本发明实施例方法涉及的硬件运行环境的设备结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种基于观察者模式的信息通知方法,在基于观察者模式的信息通知方法第一实施例中,参照图1,所述基于观察者模式的信息通知方法包括:
步骤S10,发布者接收所有订阅者的订阅信息,并基于所述订阅信息获取触发事件和回调方法;
所述观察者模式是一种软件设计模式,设定了两种目标对象,发布者和订阅者,订阅者通过在发布者处注册订阅信息通知,当发布者发生状态改变或检测到触发事件时,发布者通过订阅者留下的订阅信息将当前的变化趋势通知订阅者,一般订阅者做出相应的响应。
发布者可以是功能模块,功能模组等配置,发布者可实时接收到其他对象组的数据,包括所有订阅者的订阅信息。订阅者根据发布者的数据状态变化而调整自身的功能状态。订阅信息可以是天气预报、商品价格变动等等。
由于发布者自身功能状态的变化或检测到数据信息不可预见,因此通知到订阅者的过程也是不可预见。故需要有一个触发事件作为本次信息通知的限定前提。订阅者预留给发布者的订阅信息中,包含有发布者通知订阅者的前提条件,以及通知订阅者的途径。
所述触发事件指的是订阅者所需要的数据信息,包括发布者所检测到的特定数据或者发布者本身的功能状态变化。所述回调方法指的是订阅者预设给发布者通过函数参数传递反馈数据信息的执行方法。发布者只有检测到触发事件,才能够正常调用回调方法。
步骤S20,发布者基于预设规则加载所有订阅者的回调方法;
所述预设规则指的是用户或系统为发布者设置的特定规则,可以是发布者加载回调方法所采取的方式,可以是加载哪些回调方法,也可以是加载回调方法的先后顺序。一个发布者对象可以面向多个订阅者对象,不同的订阅者也可以具有同样的触发事件。因此发布者需要加载当前所记录的所有订阅者的回调方法。不同的订阅者可能所订阅到的内容不一致,即发布者在不同时刻里检测到不同的触发事件,为保障订阅者不错漏任何通知信息,发布者需将所有订阅者的回调方法一起加载,并保留在内存队列之中静默运行,等待调用。发布者加载完各个订阅者的回调方法之后,实时检测自身当前所有的交互事件,以寻找是否有符合条件的触发事件。
步骤S30,当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法,以生成回调指令;
订阅发布者信息通知的各个订阅者均设置有各自的触发事件。发布者在检测当前所有的交互事件时,可将交互事件与所有触发事件进行一一比对,以判断当前的交互事件是否属于触发事件。在检测到触发事件时,根据触发事件所对应的订阅者,查询到当前内存队列中所加载的该订阅者的回调方法,并调用运行,生成回调指令。所述回调指令指的是发布者根据回调方法生成的具有状态信息通知的指令,可作为发布者将触发事件传递给订阅者的信号指令,以触发订阅者调整自身的功能状态。
优选地,参照图2,所述当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法的步骤包括:
步骤S31,当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法;
步骤S32,发布者基于回调方法的数据采集指令采集触发事件中的目标数据;
发布者所调用的订阅者的回调方法,可能不仅仅是一个信号传递功能,还可以作为功能数据的载体。例如,订阅者在发布者预留的回调方法需要发布者在传递触发信号时,还需要将某些特定数据传输值订阅者。例如,订阅者订阅了发布者的天气预报,那么订阅者的触发事件为天气预报数据更新,在发布者监测到该触发事件时,发布者还需要将天气预报数据一同传递给订阅者,由订阅者基于天气预报数据进行数据更新。
故,发布者在调用订阅者的回调方法时,还需要对回调方法进行数据解析,获取回调方法中的数据采集指令,并基于该数据采集指令采集触发事件中对应的目标数据,如上述天气预报数据。
步骤S33,发布者基于回调方法和目标数据生成回调指令。
步骤S40,发布者将所述回调指令发送至对应的订阅者。
发布者在采集到目标数据之后,可根据回调方法和目标数据生成回调指令,即回调指令中包含有目标数据。此时,回调指令除了传递信息通知,还具备数据传输功能。
需要说明的是,本实施例中的目标数据为小型数据包,旨在快速实现数据信号的传输,假设目标数据占有的容量较大,那么将大大影响到回调指令的传输效率,使得订阅者无法快速获得通知信息,降低系统的运行效率。因此,目标数据必须根据实际情况控制其体积范围。
发布者获得回调指令后,可直接将该回调指令发送至该回调指令对应的订阅者,完成发布者的信息通知功能。
参照图4,订阅者将订阅信息预留给发布者,发布者根据订阅信息获取到触发事件和回调方法。在发布者检测到触发事件时,发布者直接调用预加载过的该订阅者的回调方法,从而通知订阅者相关的信息通知内容。
本发明的技术方案中,首先发布者接收所有订阅者的订阅信息,并基于所述订阅信息获取触发事件和回调方法;然后发布者基于预设规则加载所有订阅者的回调方法;接着当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法,以生成回调指令;最后发布者将所述回调指令发送至对应的订阅者。本发明通过调整观察者模式中发布者的检测加载流程,以预加载形式将将发布者中的回调方法加载在内存中,在需要调用的时候直接调取,而不用临时调用加载相关回调方法,从而节省了加载回调方法的时间,提升了系统功能模块的数据处理速度,进而提高系统的运行效率,达到省性能,省时间,高效率的目的。
进一步地,在本发明基于观察者模式的信息通知方法第一实施例的基础上,提出本发明基于观察者模式的信息通知方法第二实施例,与前述实施例的区别在于,所述发布者基于预设规则加载所有订阅者的回调方法的步骤还包括:
当发布者检测到待加载的回调方法的数量大于第一阈值时,将所有待加载的回调方法进行异步加载。
发布者与订阅者之间可以是一对多模式,即一个发布者可对应有多个订阅者,例如天气预报,气象发布方作为发布者,可被多个气象订阅者关注订阅,当气象发布者检测到状态发生改变等触发事件时即可向多个气象订阅者发送回调通知方法,以完成信息推送或通知。
在现实场景中,若一个发布者的订阅者较多,则意味着发布者所需要加载的所有订阅者的回调方法数量也较。若发布者将所有回调方法一个个进行加载(即同步加载),那么发布者需要耗费大量时间才能够将数量庞大的回调方法全部加载完毕。而在发布者逐一加载回调方法的这段时间内,发布者有可能检测到某一个订阅者的触发事件时,假设此时该订阅者的回调方法尚未加载完成,那么,该订阅者将无法及时地获取到本次触发事件的信息通知。
本实施例提供一种异步加载的方式。所述异步加载指的是发布者将回调信息进行并行加载,即所有回调方法都可同时加载,这样将回调方法以不同子线程的形式加载到内存队列中,通过增大系统资源的供给,加快所有代价在回调方法的加载速度,从而避免出现回调方法加载不及时导致对应的订阅者无法快速精确地获得发布者的信息通知内容。
进一步地,在本发明基于观察者模式的信息通知方法第二实施例的基础上,提出本发明基于观察者模式的信息通知方法第三实施例,与前述实施例的区别在于,所述将所有待加载的回调方法进行异步加载的步骤包括:
发布者获取当前所有待加载的回调方法对应的订阅者的活跃程度;
当发布者检测到订阅者的活跃程度大于或等于第二阈值时,将所述订阅者的回调方法的优先级设为第一级;
当发布者检测到订阅者的活跃程度小于第二阈值时,将所述订阅者的回调方法的优先级设为第二级;
在本实施例中,活跃程度指的是订阅者与发布者之间的互动程度。假设订阅者与发布者之间进行信息通知的频率为20次/天,则可以设定该订阅者的活跃程度为20,假设订阅者与发布者之间进行信息通知的频率为15次/天,则设定该订阅者的活跃程度为15。当然,活跃程度的指标可通过百分比的形式进行量化,也可以通过数据交互频率进行量化。
本实施例设置了一个第二阈值,作为活跃程度高低的分界线,并通过活跃程度的高低进行级别区分。例如第二阈值设为18,那么上述活跃程度为20的订阅者的活跃程度将超过第二阈值,其回调方法的优先级将设置为第一级;而上述活跃程度为15的订阅者的活跃程度小于第二阈值,其回调方法的优先级将设置为第二级。
发布者加载优先级为第一级的回调方法,并当发布者检测到第一级的回调方法加载完毕时,加载第二级的回调方法。
发布者根据优先级的不同,优先加载优先级较高的回调方法,即先加载第一级的回调方法,以便快速调用通知对应的订阅者,当第一级的回调方法加载完成之后,即可加载第二级的回调方法,从而根据订阅者的活跃程度来分批次加载不同的回调方法,降低对系统资源的占用,提升系统的运行效率,降低系统的运行负担。
进一步地,在本发明基于观察者模式的信息通知方法第二实施例的基础上,提出本发明基于观察者模式的信息通知方法第四实施例,与前述实施例的区别在于,所述将所有待加载的回调方法进行异步加载的步骤包括:
发布者获取当前所有待加载的回调方法对应的订阅者的付费状况;
当发布者检测到订阅者属于付费对象时,将所述订阅者的回调方法的优先级设为第一级;
当发布者检测到订阅者属于非付费对象时,将所述订阅者的回调方法的优先级设为第二级;
在本实施例中,付费状况指的是订阅者是否预留订阅信息的同时进行服务费用的支付。假设订阅者进行费用支付,则可以将该订阅者设置为付费对象。假设订阅者未进行费用支付,则可以将该订阅者设置为未付费对象当然,以作订阅者类型区分,从而为付费对象进行更为及时有效的信息通知服务。
本实施例将付费对象与非付费对象进行等级区分,将付费对象的回调方法的优先级将设置为第一级;而将非付费对象的回调方法的优先级将设置为第二级。
发布者加载优先级为第一级的回调方法,并当发布者检测到第一级的回调方法加载完毕时,加载第二级的回调方法。
发布者根据优先级的不同,优先加载优先级较高的回调方法,即先加载第一级的回调方法,以便快速调用通知对应的订阅者,当第一级的回调方法加载完成之后,即可加载第二级的回调方法,从而根据订阅者的活跃程度来分批次加载不同的回调方法,降低对系统资源的占用,提升系统的运行效率,降低系统的运行负担。
进一步地,在本发明基于观察者模式的信息通知方法第一实施例的基础上,提出本发明基于观察者模式的信息通知方法第五实施例,与前述实施例的区别在于,所述发布者基于预设规则加载所有订阅者的回调方法的步骤之后还包括:
发布者调用订阅者的回调方法,生成测试指令,并将测试指令发送至对应的订阅者,以测试回调方法的可用性;
在本实施例中,部分订阅者对时间具有敏感性,即订阅者具有非常严格的时间准时性,这就需要发布者在调用回调方法发送信息通知和回调指令的过程中减少异常情况,即需要保障调用回调方法时不能出错,此时回调方法是否准确可用将成为一个考量维度。
发布者可在加载所有订阅者的回调方法之后,测试性地直接调用订阅者的回调方法,并将生成的测试指令发送到对应的订阅者,这个过程忽略掉触发事件,而仅作为测试性纠错。其作用在于,在尚未检测到实际触发事件之前,排查当前回调方法的可用性,并根据其实际结果判断回调方法的可用性。
具体地,本实施例中的测试方案可以以测试发布者和订阅者之间的连接进行验证。例如,在订阅者预留注册订阅信息时,发布者向订阅者发送一段讯息,作为本实施例验证可用性的测试方案。
当发布者接收到订阅者基于回调指令反馈的测试送达指令时,执行检测触发事件的步骤;
当发布者在第一时间内未接收到订阅者基于测试指令反馈的测试送达指令时,输出订阅失败的提示信息。
订阅者将实时接收到发布者发送的测试指令,当订阅者接收到发布者发送的测试指令时,订阅者将反馈给发布者一个测试送达指令,以通知发布者指令已送达的信息。而发布者在接收到订阅者反馈的测试送达指令时,即可执行下一步的检测触发事件的步骤。
但是,假设订阅者没有接收到测试指令,或者订阅者接收到测试指令但无法正常地向订阅者反馈测试送达指令时,则发布者无法正常获知当前订阅者能否开放接口或生成专用接口来接收发布者发送的回调方法,为规范定发布者和订阅者的数据交互传输,本实施例将发布者在预定的第一时间内未接收到回调送达指令的情况设置为订阅者订阅失败,从而输出订阅失败的提示信息,以便通过系统自动或人为操作来选择或控制订阅者再次向进行订阅。
进一步地,在本发明基于观察者模式的信息通知方法第五实施例的基础上,提出本发明基于观察者模式的信息通知方法第六实施例,与前述实施例的区别在于,所述基于观察者模式的信息通知方法还包括:
当发布者检测到订阅者撤销订阅信息时,释放所述订阅者已加载的回调方法,并注销所述订阅者的订阅信息。
发布者与订阅者之间的被订阅与订阅关系是以信息数据的双向传输为基准,即发布者可与订阅者形成双向的数据传输。而二者的相互连接可以是单向,也可以是双向,即订阅者在发布者进行订阅之后,发布者和订阅者的数据通道既可以是订阅者单向决定是否订阅发布者,也可以是二者相互连接或断开。
而当发布者检测到订阅者将之前留下的订阅信息撤销或断开时,证明订阅者将不再接收到由发布者发布的通知信息此时,发布者将释放掉当前订阅者所加载的回调方法,因为订阅者已经不再订阅发布者的通知信息,该订阅者的回调方法也失去了作用。同时基于相同的理由,订阅者留在发布者数据库中的待调用的订阅信息也将失去作用,此时,发布者将注销掉当前所述订阅者的订阅信息,以释放内存供新的订阅者注册预留订阅信息使用。
本发明提供了一种信息通知系统,参照图3,所述信息通知系统包括:
获取模块10,用于发布者接收所有订阅者的订阅信息,并基于所述订阅信息获取触发事件和回调方法;
所述观察者模式是一种软件设计模式,设定了两种目标对象,发布者和订阅者,订阅者通过在发布者处注册订阅信息通知,当发布者发生状态改变或检测到触发事件时,发布者通过订阅者留下的订阅信息将当前的变化趋势通知订阅者,一般订阅者做出相应的响应。
发布者可以是功能模块,功能模组等配置,发布者可实时接收到其他对象组的数据,包括所有订阅者的订阅信息。订阅者根据发布者的数据状态变化而调整自身的功能状态。订阅信息可以是天气预报、商品价格变动等等。
由于发布者自身功能状态的变化或检测到数据信息不可预见,因此通知到订阅者的过程也是不可预见。故需要有一个触发事件作为本次信息通知的限定前提。订阅者预留给发布者的订阅信息中,包含有发布者通知订阅者的前提条件,以及通知订阅者的途径。
所述触发事件指的是订阅者所需要的数据信息,包括发布者所检测到的特定数据或者发布者本身的功能状态变化。所述回调方法指的是订阅者预设给发布者通过函数参数传递反馈数据信息的执行方法。发布者只有检测到触发事件,才能够正常调用回调方法。
加载模块20,用于发布者基于预设规则加载所有订阅者的回调方法;
一个发布者对象可以面向多个订阅者对象,不同的订阅者也可以具有同样的触发事件。因此发布者需要加载当前所记录的所有订阅者的回调方法。不同的订阅者可能所订阅到的内容不一致,即发布者在不同时刻里检测到不同的触发事件,为保障订阅者不错漏任何通知信息,发布者需将所有订阅者的回调方法一起加载,并保留在内存队列之中静默运行,等待调用。发布者加载完各个订阅者的回调方法之后,实时检测自身当前所有的交互事件,以寻找是否有符合条件的触发事件。
调用模块30,用于当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法,以生成回调指令;
订阅发布者信息通知的各个订阅者均设置有各自的触发事件。发布者在检测当前所有的交互事件时,可将交互事件与所有触发事件进行一一比对,以判断当前的交互事件是否属于触发事件。在检测到触发事件时,根据触发事件所对应的订阅者,查询到当前内存队列中所加载的该订阅者的回调方法,并调用运行,生成回调指令。所述回调指令指的是发布者根据回调方法生成的具有状态信息通知的指令,可作为发布者将触发事件传递给订阅者的信号指令,以触发订阅者调整自身的功能状态。
优选地,参照图2,所述当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法的步骤包括:
当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法;
发布者基于回调方法的数据采集指令采集触发事件中的目标数据;
发布者所调用的订阅者的回调方法,可能不仅仅是一个信号传递功能,还可以作为功能数据的载体。例如,订阅者在发布者预留的回调方法需要发布者在传递触发信号时,还需要将某些特定数据传输值订阅者。例如,订阅者订阅了发布者的天气预报,那么订阅者的触发事件为天气预报数据更新,在发布者监测到该触发事件时,发布者还需要将天气预报数据一同传递给订阅者,由订阅者基于天气预报数据进行数据更新。
故,发布者在调用订阅者的回调方法时,还需要对回调方法进行数据解析,获取回调方法中的数据采集指令,并基于该数据采集指令采集触发事件中对应的目标数据,如上述天气预报数据。
发布者基于回调方法和目标数据生成回调指令。
发送模块40,用于发布者将回调指令发送至对应的订阅者。
发布者在采集到目标数据之后,可根据回调方法和目标数据生成回调指令,即回调指令中包含有目标数据。此时,回调指令除了传递信息通知,还具备数据传输功能。
需要说明的是,本实施例中的目标数据为小型数据包,旨在快速实现数据信号的传输,假设目标数据占有的容量较大,那么将大大影响到回调指令的传输效率,使得订阅者无法快速获得通知信息,降低系统的运行效率。因此,目标数据必须根据实际情况控制其体积范围。
发布者获得回调指令后,可直接将该回调指令发送至该回调指令对应的订阅者,完成发布者的信息通知功能。
参照图4,订阅者将订阅信息预留给发布者,发布者根据订阅信息获取到触发事件和回调方法。在发布者检测到触发事件时,发布者直接调用预加载过的该订阅者的回调方法,从而通知订阅者相关的信息通知内容。
参照图5,图5是本发明实施例方法涉及的硬件运行环境的设备结构示意图。
本发明实施例终端可以是PC,也可以是智能手机、平板电脑、电子书阅读器、MP3(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、便携计算机等终端设备。
如图5所示,该信息通知设备可以包括:处理器1001,例如CPU,存储器1005,通信总线1002。其中,通信总线1002用于实现处理器1001和存储器1005之间的连接通信。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
可选地,该信息通知设备还可以包括用户接口、网络接口、摄像头、RF(RadioFrequency,射频)电路,传感器、音频电路、WiFi模块等等。用户接口可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口还可以包括标准的有线接口、无线接口。网络接口可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
本领域技术人员可以理解,图5中示出的信息通知设备结构并不构成对信息通知设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图5所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块以及信息通知程序。操作系统是管理和控制信息通知设备硬件和软件资源的程序,支持信息通知程序以及其它软件和/或程序的运行。网络通信模块用于实现存储器1005内部各组件之间的通信,以及与信息通知设备中其它硬件和软件之间通信。
在图5所示的信息通知设备中,处理器1001用于执行存储器1005中存储的信息通知程序,实现以下步骤:
发布者接收所有订阅者的订阅信息,并基于所述订阅信息获取触发事件和回调方法;
发布者基于预设规则加载所有订阅者的回调方法;
当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法,以生成回调指令;
发布者将所述回调指令发送至对应的订阅者。
进一步地,所述当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法的步骤包括:
当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法;
发布者基于回调方法的数据采集指令采集触发事件中的目标数据;
发布者基于回调方法和目标数据生成回调指令。
进一步地,所述发布者基于预设规则加载所有订阅者的回调方法的步骤还包括:
当发布者检测到待加载的回调方法的数量大于第一阈值时,将所有待加载的回调方法进行异步加载。
进一步地,所述发布者基于预设规则加载所有订阅者的回调方法的步骤之后还包括:
发布者调用订阅者的回调方法,生成测试指令,并将测试指令发送至对应的订阅者,以测试回调方法的可用性;
当发布者接收到订阅者基于回调指令反馈的测试送达指令时,执行检测触发事件的步骤;
当发布者在第一时间内未接收到订阅者基于测试指令反馈的测试送达指令时,输出订阅失败的提示信息。
进一步地,所述发布者将所述回调指令发送至对应的订阅者的步骤之后还包括:
当发布者接收到订阅者基于回调指令反馈的回调送达指令时,重新加载所述订阅者的回调方法,以待后续检测到触发事件时进行调用。
进一步地,所述发布者将所述回调指令发送至对应的订阅者的步骤之后还包括:
当发布者在第二时间内未接收到订阅者基于回调指令反馈的回调送达指令时,重新执行调用所述订阅者的回调方法,直至接收到所述回调送达指令。
进一步地,所述基于观察者模式的信息通知方法还包括:
当发布者检测到订阅者撤销订阅信息时,释放所述订阅者已加载的回调方法,并注销所述订阅者的订阅信息。
本发明信息通知设备的具体实施方式与上述基于观察者模式的信息通知方法各实施例基本相同,在此不再赘述。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序还可被一个或者一个以上的处理器执行以用于:
发布者接收所有订阅者的订阅信息,并基于所述订阅信息获取触发事件和回调方法;
发布者基于预设规则加载所有订阅者的回调方法;
当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法,以生成回调指令;
发布者将所述回调指令发送至对应的订阅者。
本发明计算机可读存储介质具体实施方式与上述基于观察者模式的信息通知方法各实施例基本相同,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种基于观察者模式的信息通知方法,其特征在于,所述观察者模式中设置有发布者和订阅者,所述基于观察者模式的信息通知方法包括:
发布者接收所有订阅者的订阅信息,并基于所述订阅信息获取触发事件和回调方法;
发布者基于预设规则加载所有订阅者的回调方法;
当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法,以生成回调指令;
发布者将所述回调指令发送至对应的订阅者;
所述发布者基于预设规则加载所有订阅者的回调方法的步骤还包括:
当发布者检测到待加载的回调方法的数量大于第一阈值时,将所有待加载的回调方法进行异步加载;
所述将所有待加载的回调方法进行异步加载的步骤包括:
发布者获取当前所有待加载的回调方法对应的订阅者的活跃程度,所述活跃程度为订阅者和发布者之间进行信息通知的频率;
当发布者检测到订阅者的活跃程度大于或等于第二阈值时,将所述订阅者的回调方法的优先级设为第一级;
当发布者检测到订阅者的活跃程度小于第二阈值时,将所述订阅者的回调方法的优先级设为第二级;
发布者加载优先级为第一级的回调方法,并当发布者检测到第一级的回调方法加载完毕时,加载第二级的回调方法。
2.如权利要求1所述的基于观察者模式的信息通知方法,其特征在于,所述当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法的步骤包括:
当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法;
发布者基于回调方法的数据采集指令采集触发事件中的目标数据;
发布者基于回调方法和目标数据生成回调指令。
3.如权利要求1所述的基于观察者模式的信息通知方法,其特征在于,所述将所有待加载的回调方法进行异步加载的步骤包括:
发布者获取当前所有待加载的回调方法对应的订阅者的付费状况;
当发布者检测到订阅者属于付费对象时,将所述订阅者的回调方法的优先级设为第一级;
当发布者检测到订阅者属于非付费对象时,将所述订阅者的回调方法的优先级设为第二级;
发布者加载优先级为第一级的回调方法,并当发布者检测到第一级的回调方法加载完毕时,加载第二级的回调方法。
4.如权利要求1所述的基于观察者模式的信息通知方法,其特征在于,所述发布者基于预设规则加载所有订阅者的回调方法的步骤之后还包括:
发布者调用订阅者的回调方法,生成测试指令,并将测试指令发送至对应的订阅者,以测试回调方法的可用性;
当发布者接收到订阅者基于回调指令反馈的测试送达指令时,执行检测触发事件的步骤;
当发布者在第一时间内未接收到订阅者基于测试指令反馈的测试送达指令时,输出订阅失败的提示信息。
5.如权利要求1-4任一项所述的基于观察者模式的信息通知方法,其特征在于,所述基于观察者模式的信息通知方法还包括:
当发布者检测到订阅者撤销订阅信息时,释放所述订阅者已加载的回调方法,并注销所述订阅者的订阅信息。
6.一种信息通知系统,其特征在于,所述信息通知系统包括:
获取模块,用于发布者接收所有订阅者的订阅信息,并基于所述订阅信息获取触发事件和回调方法;
加载模块,用于发布者基于预设规则加载所有订阅者的回调方法;
调用模块,用于当发布者检测到所述触发事件时,基于所述触发事件调用已加载的对应订阅者的回调方法,以生成回调指令;
发送模块,用于发布者将回调指令发送至对应的订阅者;
所述加载模块还用于:
当发布者检测到待加载的回调方法的数量大于第一阈值时,将所有待加载的回调方法进行异步加载;
所述加载模块还用于:
发布者获取当前所有待加载的回调方法对应的订阅者的活跃程度,所述活跃程度为订阅者和发布者之间进行信息通知的频率;
当发布者检测到订阅者的活跃程度大于或等于第二阈值时,将所述订阅者的回调方法的优先级设为第一级;
当发布者检测到订阅者的活跃程度小于第二阈值时,将所述订阅者的回调方法的优先级设为第二级;
发布者加载优先级为第一级的回调方法,并当发布者检测到第一级的回调方法加载完毕时,加载第二级的回调方法。
7.一种信息通知设备,其特征在于,所述信息通知设备包括:存储器、处理器,通信总线以及存储在所述存储器上的信息通知程序,
所述通信总线用于实现处理器与存储器间的通信连接;
所述处理器用于执行所述信息通知程序,以实现如权利要求1至5中任一项所述的基于观察者模式的信息通知方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有信息通知程序,所述信息通知程序被处理器执行时实现如权利要求1至5中任一项所述的基于观察者模式的信息通知方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710913888.1A CN107729161B (zh) | 2017-09-28 | 2017-09-28 | 信息通知方法、系统、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710913888.1A CN107729161B (zh) | 2017-09-28 | 2017-09-28 | 信息通知方法、系统、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107729161A CN107729161A (zh) | 2018-02-23 |
CN107729161B true CN107729161B (zh) | 2020-08-11 |
Family
ID=61208449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710913888.1A Active CN107729161B (zh) | 2017-09-28 | 2017-09-28 | 信息通知方法、系统、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107729161B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108920358B (zh) * | 2018-06-05 | 2022-02-08 | 东软集团股份有限公司 | 消息总线的路由表生成方法、装置、存储介质及电子设备 |
CN109445966B (zh) * | 2018-11-06 | 2020-11-10 | 网易传媒科技(北京)有限公司 | 事件处理方法、装置、介质和计算设备 |
CN110377852A (zh) * | 2019-06-24 | 2019-10-25 | 平安科技(深圳)有限公司 | 页面展示数据清除方法、装置、计算机设备和存储介质 |
CN111176632A (zh) * | 2020-01-02 | 2020-05-19 | 山东浪潮通软信息科技有限公司 | 一种iOS端响应式开发框架的搭建方法 |
CN111475263A (zh) * | 2020-04-10 | 2020-07-31 | 上海移为通信技术股份有限公司 | 事件处理方法、设备及存储介质 |
CN113626219B (zh) * | 2021-08-06 | 2022-11-22 | 湖南大学 | 一种基于注册回调机制的线程间数据分发方法 |
CN114328156B (zh) * | 2021-12-28 | 2023-06-16 | 苏州万店掌网络科技有限公司 | 协议端口的健康检测方法、装置、设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1694404A (zh) * | 2004-05-08 | 2005-11-09 | 国际商业机器公司 | 信息分发的方法与系统 |
CN101378403A (zh) * | 2008-07-02 | 2009-03-04 | 北京航空航天大学 | 一种基于集合的资源通知处理系统及处理方法 |
CN103944924A (zh) * | 2014-05-15 | 2014-07-23 | 重庆邮电大学 | 一种基于RESTful的泛在网发布订阅中间件模型 |
US9716684B1 (en) * | 2006-12-16 | 2017-07-25 | United Services Automobile Association (Usaa) | Automated delayed message redelivery |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10552235B2 (en) * | 2015-09-04 | 2020-02-04 | Successfactors, Inc. | Uniform event framework |
-
2017
- 2017-09-28 CN CN201710913888.1A patent/CN107729161B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1694404A (zh) * | 2004-05-08 | 2005-11-09 | 国际商业机器公司 | 信息分发的方法与系统 |
US9716684B1 (en) * | 2006-12-16 | 2017-07-25 | United Services Automobile Association (Usaa) | Automated delayed message redelivery |
CN101378403A (zh) * | 2008-07-02 | 2009-03-04 | 北京航空航天大学 | 一种基于集合的资源通知处理系统及处理方法 |
CN103944924A (zh) * | 2014-05-15 | 2014-07-23 | 重庆邮电大学 | 一种基于RESTful的泛在网发布订阅中间件模型 |
Also Published As
Publication number | Publication date |
---|---|
CN107729161A (zh) | 2018-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729161B (zh) | 信息通知方法、系统、设备及计算机可读存储介质 | |
CN110290180B (zh) | 分布式任务调度方法、装置、计算机设备和存储介质 | |
US10819455B2 (en) | Broadcast processing method, non-transitory storage medium, and electronic device | |
CN111131058B (zh) | 访问量控制方法和装置 | |
CN110300067B (zh) | 队列调整方法、装置、设备及计算机可读存储介质 | |
CN109800083B (zh) | 一种微服务协同调用的方法、装置、系统及存储介质 | |
CN105656810B (zh) | 一种更新应用程序的方法及装置 | |
CN108650667A (zh) | 终端调度方法和装置 | |
WO2018161968A1 (zh) | 广播消息排队的方法、装置及终端 | |
CN108829519A (zh) | 基于云平台的任务调度方法、云平台及计算机可读存储介质 | |
US10990460B2 (en) | Method of generating broadcast queue, storage medium, and terminal | |
CN110262878B (zh) | 定时任务处理方法、装置、设备及计算机可读存储介质 | |
CN109117280A (zh) | 电子装置及其限制进程间通信的方法、存储介质 | |
CN111052083A (zh) | 用于在启动期间管理服务的调度的方法和装置 | |
CN106851595B (zh) | 有序广播处理方法、装置和终端设备 | |
US11206673B2 (en) | Priority control method and data processing system | |
CN111625344B (zh) | 应用系统中的资源调度系统、方法及装置 | |
CN108989244B (zh) | 数据处理方法、装置、存储介质及电子设备 | |
CN109240914B (zh) | 安全测试任务的监控管理方法及终端设备 | |
CN107888772B (zh) | 一种确定配置信息的方法、装置及存储介质 | |
CN107592633B (zh) | 一种订阅处理方法、装置、电子设备及可读存储介质 | |
WO2014109487A1 (ko) | 응용프로그램 관리장치 및 관리방법 | |
CN112153719A (zh) | 通信方法、装置、系统及计算机可读存储介质 | |
CN110247808B (zh) | 信息发送方法、装置、设备及可读存储介质 | |
CN111638914A (zh) | 一种对终端功能的设置方法、设备及存储介质 |
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 |