一种微信公众号并发消息处理机制的制作方法

文档序号:12905965阅读:2878来源:国知局

本发明涉及计算机互联网技术领域,具体涉及一种微信公众号并发消息处理机制。



背景技术:

腾迅公司提供了微信公众平台以及微信公众号接收消息的相关接口,定义了在开发者模式下,微信公众平台接收普通消息和接收事件推送的数据包格式,以及发送消息的数据包格式。

腾迅公司仅定义了数据包格式和要求,并不提供数据流程以及业务处理,要使用者应用软件开发能力,根据业务自行开发。微信公众平台或者微信公众号使用者不能快速根据需求完成开发者模式的应用,使用复杂,增加了开发难度。



技术实现要素:

针对微信公众号接口要求,第三方平台在收到微信推送过来的消息后,5秒钟之内必须返回处理结果。所以本发明提供一种高效处理微信请求的微信公众号并发消息处理机制。该处理机制分为两部分:快速处理、任务处理,快速处理的都是需要快速回复的问题,所有不需要快速回复的消息,都用任务处理机制。同时,在大量消息并发处理的时候,通过任务管理器可以保证消息可以快速处理。保证每条消息都能快速稳定的处理。

为达到上述快速高效的目的,本发明提供如下技术方案:

一种微信公众号并发消息处理机制,包括微信消息统一接口:用于接收并处理由微信以及微信公众号推送过来消息;

消息工厂:用于接收消息、判断消息类型,自动生成消息参数信息并通过参数信息自动加载对应的处理模块,找到指定消息的处理模块后,将消息参数信息传入指定模块来处理;其中:处理模块与指定模块是指同一个模块。对处理模块的介绍如下:因为微信的消息有很多种类型,每种类型的处理方式都不同。所以我们根据每种消息的处理单独提出做成相应的处理单元(即处理模块)。处理模块的调用方式是统一的,不同处理模块内的处理逻辑是不同的。比如:文本消息处理模块,消息工厂判断消息类型是文本消息,就把这个消息传递给文本消息处理模块来处理。

事件处理器:用于接收由消息工厂发送过来的任务并对该任务进行初步处理,验证任务是否需要快速处理,如果接收到的事件不能快速处理回复,这时候就需要调用异步任务处理了。

消息处理器:用于接收由所述消息工厂发来的任务并对该任务进行初步处理,验证消息是否有触发关键字回复,如果触发需要进行快速处理并返回一条回复消息;在快速处理完成后,自动添加一个异步任务处理任务;

其中:初步处理是指:效验消息的完整性,整理消息,标注消息是那种类型,提取此类消息的关键信息方便下一步的处理。例如:收到的是事件消息,系统会先判断是什么消息类型,发现是事件消息,系统从消息内容中提取出事件消息的具体关键字;

快速处理是指:接收到消息后先调用处理模块进行快速处理。由处理模块来判断是否需要建立任务继续处理;

异步任务处理:是由消息处理器对待办的任务进行调用。

异步消息处理器:用于通过(threadpool.queueuserworkitem)线程池来自动分配待处理的任务,若任务需要系统自动回复消息就调用主动发送消息器;

主动发送消息器:当收到发送消息任务后,先整理消息任务;判断此粉丝(其中:粉丝是指关注微信公众号的微信用户)是否可以主动发送消息;如果可以发送,调用微信发送接口,将消息推送给微信。

作为优选的,事件类型有:点击菜单,获取粉丝地理位置;消息类型有:文本、图片、语音、视频、图文和地理位置。

作为优选的,将微信公众号推送过来消息由微信消息统一接口进行处理的步骤如下:

(1)、验证微信消息是否从微信公众号服务器发送过来,通过微信服务器白名单进行ip验证;

(2)、验证消息是否正确,通过微信解密规则(aes解密)对消息进行解密,从而验证消息是否正确。

(3)、对解密后的数据进行整理,并通知消息工厂(messagefactory)来进行处理。

作为优选的,所述消息工厂(messagefactory)对所接收消息的基本处理步骤如下:

(1)、接收消息,判断消息类型;

(2)、自动生成消息参数信息,并通过参数信息自动加载对应的处理模块;

(3)、找到指定消息的处理模块后,将消息参数信息传入指定模块来处理。

作为优选的,所述事件处理器对所接收任务的基本处理步骤如下:

(1)、通过消息工厂发来的处理任务,对任务进行初步处理;

(2)、验证任务是否需要快速处理,如点击菜单需要快速回复一条设置的消息;

(3)、如果接收到的事件不能快速处理回复,这时候就需要调用异步任务处理了。

作为优选的,所述消息处理器对所接收任务的基本处理步骤如下:

(1)、通过消息工厂发来的处理任务,对任务进行初步处理;

(2)、验证消息是否有触发关键字回复,如果触发需要进行快速处理并返回一条回复消息;

(3)、快速处理完成后,会自动添加一个异步任务处理任务。

作为优选的,所述异步消息处理器对所接收任务的基本处理步骤如下:

(1)、通过(threadpool.queueuserworkitem)线程池来自动分配待处理的任务;

(2)、任务处理,对接收到的消息任务进行下一步的处理;

(3)、如果任务需要系统自动回复消息,就会在调用主动发送消息器。

作为优选的,所述主动发送消息器对所接收任务的基本处理步骤如下:

(1)、当收到发送消息任务后,先整理消息任务;

(2)、判断此粉丝是否可以主动发送消息;

(3)、如果可以发送,调用微信发送接口,将消息推送给微信。

与现有技术相比,本发明的有益效果如下:

采用本发明的技术方案,在多类型消息(包括文本、图片、语音、视频、图文和地理位置等)处理与大并发处理有明显的效果。如:微信推送过来的视频,视频资料一般都比较大,系统会在接收到视频类型的消息以后,直接返回告诉微信已经处理。然后系统会并行建立一个处理视频的任务,由这个任务来下载视频,将视频资料保存到本地。微信公众号每天会收到大量各种类型的消息,如何保证处理的效率采用本发明的这套并发消息处理机制非常适用。

附图说明

图1为本发明整体功能框架结构示意图。

具体实施方式

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

如图1所示,本发明提供一种微信公众号并发消息处理机制的具体实施例,具体步骤如下:

步骤1、由微信公众号或者微信推送信息给微信消息统一接口(webapi),该微信消息统一接口(webapi)接收微信公众号或者微信推送过来信息的同时进行解密验证,验证通过才进行下面的处理步骤;具体地:

1-1、验证微信消息是否从微信公众号服务器发送过来,通过微信服务器白名单进行ip验证。

1-2、验证消息是否正确,通过微信解密规则(aes解密)对消息进行解密。从而验证消息是否正确。

1-3、对解密后的数据进行整理,并通知消息工厂(messagefactory)来进行处理。

步骤2、消息工厂(messagefactory)接收由微信消息统一接口(webapi)推送过来的消息,并判断消息类型。自动生成消息参数信息,并通过参数信息自动加载对应的处理模块。找到指定消息的处理模块后,将消息参数信息传入指定模块来处理。

步骤4、事件处理器接收由消息工厂发送过来的处理任务,并对任务进行初步处理;事件处理器验证任务是否需要快速处理,如点击菜单需要快速回复一条设置的消息;如果接收到的事件不能快速处理回复,这时候就需要调用异步任务处理了。

步骤5、消息处理器接收由消息工厂发来的处理任务,并对任务进行初步处理;消息处理器验证消息是否有触发关键字回复,如果触发需要进行快速处理并返回一条回复消息。在快速处理完成后,会自动添加一个异步任务处理任务。

步骤6、异步消息处理器接收由(threadpool.queueuserworkitem)线程池来自动分配待处理的任务。并对接收到的消息任务进行下一步的处理;如果任务需要系统自动回复消息,就会在调用主动发送消息。

步骤7、由主动发送消息器完成如下操作:当收到发送消息任务后,先整理消息任务;判断此粉丝是否可以主动发送消息;如果可以发送,调用微信发送接口,将消息推送给微信或者微信服务器。

最后关于快速处理与任务处理的说明:

消息处理:当收到微信发送来的粉丝点击菜单事件后

先由消息工厂判断菜单事件应该由哪个具体模块来处理,找到处理事件的模块后。将消息传给事件处理模块。

事件处理模块整理消息,判断事件类型,找到时间key对应的自动回复内容,生成回复消息。

将回复消息返回给微信,并建立一个消息存储的任务,由这个任务来把接收与回复的消息记录下来。

最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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