即时通信系统中的消息传递跟踪方法和设备的制造方法_4

文档序号:9420231阅读:来源:国知局
用到达消息接收服务模块4053之前,消息跟踪切面4会利用AOP切面技术通过拦截装置201-4把此调用拦截下来,以便通过处理装置203-4在消息跟踪切面4中进行处理。因为是在子线程中被调用,所以在消息跟踪切面4中可以通过获取单元2031-4把之前在消息跟踪切面3中通过存储单元2035-3放入InheritableThreadLocal的消息UUID再次利用InheritableThreadLocal (即,InheritableThreadLocal.get O)方法调用取出。然后通过记录单元2033-4将该消息的标识、消息的内容(例如,消息类型,发送者、接收者、消息的文本信息、当前时间等)、以及消息接收服务模块4053的标识(例如,消息接收服务模块的全类名和相应的方法签名等)等记录于例如日志文件或数据库等中,以指示该消息已经到达了消息接收服务模块4053。消息在被消息跟踪切面3拦截之后由消息发送服务模块4051传递至消息接收服务模块4053被消息跟踪切面4拦截的处理流程如图8所示,其中非斜体字和实线箭头表示正常流程,斜字体和点划线箭头表示根据本发明示例性实施例的消息传递跟踪方案的处理流程。
[0079]应当理解,尽管在以上的示例性消息传递场景中,描述了应用模块403内的接入点服务模块4031是在同一个线程中调用应用模块403内的转发服务模块4033所提供的转发服务的;转发服务模块4033是在不同的进程中调用应用模块405内的消息发送服务模块4051所提供的消息发送服务的;消息发送服务模块4051是在不同的线程中调用消息接收服务模块4053所提供的消息接收服务的,但是,在此只是意在对服务模块间的服务调用的三种不同类型(即,同一进程中的同一线程的方法调用;同一进程中的不同线程之间的方法调用;不同进程之间的方法调用)分别做出说明,同一进程中的同一线程的方法调用使用Java中的ThreadLocal来实现;同一进程中的不同线程之间的方法调用使用Java中的InheritableThreadLocal来实现;不同进程之间的方法调用使用Dubbo框架中的RpcContext来实现。如前所述,尽管在本例中以使用Dubbo协议的远程方法调用作为示例,但是远程方法调用所使用的协议不限于此。本发明适用于使用本领域技术人员可以预想的任何适合的协议实现远程方法调用的情况。在不同进程之间的方法调用可以使用各自协议框架中的相应方法调用函数来实现。在实际应用中,服务模块间调用的类型是可以依据属于各应用的具体服务模块而预先确定的。
[0080]本领域内的技术人员应明白,本发明的实施例可提供为方法、设备、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0081]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0082]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0083]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0084]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【主权项】
1.一种在即时通信系统中对在多个服务模块之间传递的消息进行跟踪的方法,所述方法包括,针对所述多个服务模块中的至少一个服务模块: 在消息传递至所述服务模块之前,拦截所述消息; 获取所述消息的标识; 记录所述消息的标识和所述服务模块的标识,以指示所述消息能够到达所述服务模块。2.根据权利要求1所述的方法,其中若所述服务模块不是消息传递所经过的最后一个服务模块,所述方法还包括:存储所述消息的标识,以供针对下一服务模块执行的获取步骤从中获取所述消息的标识。3.根据权利要求2所述的方法,其中若所述服务模块是消息传递所经过的第一个服务模块,获取所述消息的标识的步骤包括:生成所述消息的标识。4.根据权利要求2所述的方法,其中若所述服务模块不是消息传递所经过的第一个服务模块,获取所述消息的标识的步骤包括:获取针对前一服务模块的拦截所存储的所述消息的标识。5.根据权利要求1所述的方法,其中若所述服务模块是消息传递所经过的最后一个服务模块,获取所述消息的标识的步骤包括:获取针对前一服务模块的拦截所存储的所述消息的标识。6.根据权利要求1所述的方法,其中前一服务模块对所述服务模块的服务调用类型包括以下应用编程接口 API调用之一:同一进程中的同一线程的API调用;同一进程中的不同线程之间的API调用;不同进程之间的API调用。7.根据权利要求6所述的方法,其中同一进程中的同一线程的API调用使用Java中的ThreadLocal来实现;同一进程中的不同线程之间的API调用使用Java中的InheritableThreadLocal来实现;不同进程之间的API调用使用Dubbo框架中的RpcContext 来实现。8.根据权利要求1所述的消息传递跟踪方法,其使用面向切面编程AOP来实现。9.一种在即时通信系统中对在多个服务模块之间传递的消息进行跟踪的设备,所述设备用于所述多个服务模块中的至少一个服务模块,并且包括: 拦截装置,被配置为:在消息传递至相应的服务模块之前,拦截所述消息; 处理装置,被配置为:对拦截装置所拦截的消息进行处理,所述处理装置包括: 获取单元,被配置为:获取所述消息的标识;以及 记录单元,被配置为:记录所述消息的标识和所述服务模块的标识,以指示所述消息能够到达所述服务模块。10.根据权利要求9所述的设备,其中若所述服务模块不是消息传递所经过的最后一个服务模块,所述处理装置还包括:存储单元,被配置为存储所述消息的标识,以供用于下一服务模块的所述设备中的处理装置从中获取所述消息的标识。11.根据权利要求10所述的设备,其中若所述服务模块是消息传递所经过的第一个服务模块,所述获取单元生成所述消息的标识。12.根据权利要求10所述的设备,其中若所述服务模块不是消息传递所经过的第一个服务模块,所述获取单元从用于前一服务模块的所述设备中的存储单元获取针对前一服务模块的拦截所存储的所述消息的标识。13.根据权利要求9所述的设备,其中若所述服务模块是消息传递所经过的最后一个服务模块,所述获取单元从用于前一服务模块的所述设备中的存储单元获取针对前一服务模块的拦截所存储的所述消息的标识。14.根据权利要求9所述的设备,其中前一服务模块对所述服务模块的服务调用类型包括以下应用编程接口 API调用之一:同一进程中的同一线程的API调用;同一进程中的不同线程之间的API调用;不同进程之间的API调用。15.根据权利要求14所述的设备,其中同一进程中的同一线程的API调用使用Java中的ThreadLocal来实现;同一进程中的不同线程之间的API调用使用Java中的InheritableThreadLocal来实现;不同进程之间的API调用使用Dubbo框架中的RpcContext 来实现。16.根据权利要求9所述的设备,其使用面向切面编程AOP来实现。
【专利摘要】本发明提出了一种在即时通信系统中对在多个服务模块之间传递的消息进行跟踪的方法,所述方法包括,针对所述多个服务模块中的至少一个服务模块:在消息传递至相应的服务模块之前,拦截所述消息;获取所述消息的标识;并记录所述消息的标识和所述服务模块的标识,以指示所述消息能够到达所述服务模块。本发明还提出了一种在即时通信系统中对在多个服务模块之间传递的消息进行跟踪的设备。
【IPC分类】H04L12/58
【公开号】CN105141505
【申请号】CN201510527217
【发明人】李梁
【申请人】北京京东尚科信息技术有限公司, 北京京东世纪贸易有限公司
【公开日】2015年12月9日
【申请日】2015年8月25日
当前第4页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1