消息处理方法

文档序号:7761848阅读:450来源:国知局
专利名称:消息处理方法
技术领域
本发明涉及计算机技术领域,特别涉及一种消息分发及性能调优技术中的消息处
理方法。
背景技术
在大访问量、高并发的大型网站中,Web服务器的线程消耗是非常严重的,线程资 源十分保贵,如何提高线程利用率、提高请求的响应能力常常是网站性能优化的关键点。但 在系统中又常常会有一些高并发、高耗时、低实时性的操作,这些操作的结果对于网站用户 来说并不需要及时反馈,但是如果网页等待这些同步操作返回,则对线程占用和响应都有 严重的影响,减少服务的吞吐量。这样,如何分流这些消息,进行异步处理就变得重要了。异 步调用框架就提供了一个通用的模型来处理这样的调用。现有方案一使用线程池对耗时操作进行异步处理。把一个需要执行的操作交给 线程池,线程池自己负责线程的创建、分配和销毁。通过使用线程池可以对高消耗的操作进 行优化,从而提高系统的处理能力和吞吐量。其缺陷是线程池仍然是消耗本机线程,在高 并发的情况下对CPU和内存消耗非常严重,虽然可以通过修改配置提高线程数,但是对本 机资源的消耗是无法有效解决的。现有方案二 使用消息队列(MSMQ)异步处理高消耗的操作。通过使用消息队列可 以把待处理的消息路由到本机或者别的机器上的另外一个进程进行处理。这种方式提供更 好的资源扩展,通过把消息路由到别的机器进行处理,可以降低对本机资源的消耗,同时消 息队列所提供的异步和离线机制可以更好的提高主程序的响应能力。消息队列的离线机制 也有效保障了消息传递的可靠性。其缺陷是消息队列本身没有合适的可编程机制,支持针 对不同的消息处理应用相对应的插件进行处理的机制,以及针对不同消息的按需的灵活路 由,需要在此基础上进行扩展。

发明内容
(一)要解决的技术问题本发明要解决的技术问题是如何提供一个通用的框架,对消息进行分流和异步 处理,并且使服务端能够支持针对不同的消息动态地选择相应的插件分别进行处理。( 二 )技术方案为解决上述技术问题,本发明提供了一种消息处理方法,其特征在于,包括以下步 骤Sl 客户端把要进行异步处理或离线处理的消息路由到对应的服务端;S2 服务端接收所述消息,然后分析其中的消息来源参数,生成可在反转控制IOC 容器中提取的关系名称;S3 通过所述关系名称从所述IOC容器中提取与消息对应的消息处理器;S4 在各自的消息处理器中实现对消息的处理。
其中,步骤Sl具体包括Sll 客户端把要进行异步处理或离线处理的消息写入微软消息队列MSMQ ;S12 =Windows操作系统根据服务端提供的服务地址,把消息自动路由到服务端。其中,步骤Sl中消息队列的写入操作应用Windows通信基础WCF来处理。其中,步骤S2中生成可在反转控制IOC容器中提取的关系名称具体方式为根据 事先在IOC容器中注册的消息来源参数与消息处理器的对应关系提取关系名称。其中,在步骤S2中,通过所述服务端提供的消息服务接口接收所述消息。其中,消息接口中的参数包括消息标识和消息来源标识,所述消息来源标识包 括客户端标识、服务标识及服务的版本ID。其中,在步骤S2中,所述消息处理器通过统一的接口被调用。其中,在步骤S4中,对消息的处理包括对外部服务的调用、对数据库的操作以及 进行日志记录。(三)有益效果本发明通过综合应用MSMQ、WCF、IOC容器和巧妙的接口设计,我们开发出了一个 可以支持异步处理消息、具有自动选择插件进行消息处理功能的通用的异步调用方法。通 过应用此方法可以把消息的处理路由给别的进程或者别的服务器进行处理,能够指定不同 的服务地址和部署更多的服务器进行处理,从而可以支持大量的消息处理任务,进而大大 地优化网站或服务的性能,提高该网站或服务的吞吐量和降低响应时间,更有效地利用服 务器资源。


图1是本发明的一种消息处理方法流程图;图2是实现本发明的消息处理方法的客户端服务端框架结构图;图3是本发明实施例的消息处理时序图。
具体实施例方式为使本发明的目的、内容、和优点更加清楚,下面将结合附图对本发明实施方式作 进一步地详细描述。本发明的整体思路是设计一个分布式调用框架,分为客户端调用和服务端处理。如图1所示,本发明的步骤包括步骤S 1,客户端把要进行异步或离线处理的消息写入MSMQ (Microsoft Message Queue,微软消息队列),Windows操作系统根据服务端提供的服务地址,把消息自动路由到 服务端。步骤S2,服务端接收来自于消息队列的消息,然后分析其中的消息来源参数,生成 可在IOCdnversion of Control,反转控制)容器中提取的关系名称。步骤S3,服务端通过所述关系名称从所述IOC容器中提取与消息对应的消息处理
ο步骤S4,在各自的消息处理器中实现对消息的处理,包括对外部服务的调用,数据 库的操作,日志记录等。
其中,消息队列的写入和提取,以及服务端的并发控制等相关网络问题通过应用 微软的 WCF (Windows CommunicationFoundation,Windows 通信基础)技术进行统一处理。图2示出了实现本发明方法的框架结构示意图,图中示出了客户端1和客户端2 分别通过各自的消息来源参数source和消息标识identity来调用服务,具体通过source 中的serviceName在分组中获取要调用服务的地址address,调用服务采用上述的WCF技术 将各自的消息放入消息队列中。服务端获取消息队列后,根据消息来源参数和消息标识从 IOC容器中选择正确的处理器来处理消息。具体步骤结合时序图进行描述。如图3所示,为消息处理时序图。 上述步骤Sl具体包括步骤S 11,客户端通过WCF把需要处理的消息写入本地的消息队列MSMQ。因为应 用了微软的WCF,客户端把消息写入队列,服务端获取队列中的消息均被表现为对服务接口 的调用和服务接口的实现处理。所以这里所谓的把消息写入消息队列,实际上是对服务端 提供的一个消息服务接口进行调用。本实施例中,消息服务接口 IServicelnvoker定义如 下表1所示表1服务端提供的服务接口定义
权利要求
一种消息处理方法,其特征在于,包括以下步骤S1客户端把要进行异步处理或离线处理的消息路由到对应的服务端;S2服务端接收所述消息,然后分析其中的消息来源参数,生成可在反转控制IOC容器中提取的关系名称;S3通过所述关系名称从所述IOC容器中提取与消息对应的消息处理器;S4在各自的消息处理器中实现对消息的处理。
2.如权利要求1所述的消息处理方法,其特征在于,步骤Sl具体包括Sll 客户端把要进行异步处理或离线处理的消息写入微软消息队列MSMQ ;S12:Wind0WS操作系统根据服务端提供的服务地址,把消息自动路由到服务端。
3.如权利要求2所述的消息处理方法,其特征在于,步骤Sl中消息队列的写入操作应 用Windows通信基础WCF来处理。
4.如权利要求1所述的消息处理方法,其特征在于,步骤S2中生成可在反转控制IOC 容器中提取的关系名称具体方式为根据事先在IOC容器中注册的消息来源参数与消息处 理器的对应关系提取关系名称。
5.如权利要求1 4中任一项所述的消息处理方法,其特征在于,在步骤S2中,通过所 述服务端提供的消息服务接口接收所述消息。
6.如权利要求5所述的消息处理方法,其特征在于,消息接口中的参数包括消息标识 和消息来源标识,所述消息来源标识包括客户端标识、服务标识及服务的版本ID。
7.如权利要求1 4中任一项所述的消息处理方法,其特征在于,在步骤S2中,所述消 息处理器通过统一的接口被调用。
8.如权利要求1 4中任一项所述的消息处理方法,其特征在于,在步骤S4中,对消息 的处理包括对外部服务的调用、对数据库的操作以及进行日志记录。
全文摘要
本发明公开了一种消息处理方法,包括以下步骤S1、客户端把要进行异步处理或离线处理的消息路由到对应的服务端;S2、服务端接收所述消息,然后分析其中的消息来源参数,生成可在控制反转IOC容器中提取的关系名称;S3、通过所述关系名称从所述IOC容器中提取与消息对应的消息处理器;S4、在各自的消息处理器中实现对消息的处理。本发明提供了一个通用的框架,对消息进行分流和异步处理,并且使服务端能够支持针对不同的消息动态地选择相应的插件分别进行处理。
文档编号H04L29/06GK101964763SQ20101050391
公开日2011年2月2日 申请日期2010年9月30日 优先权日2010年9月30日
发明者陈俊彪 申请人:北京神州泰岳软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1