CN107341059B - 一种微信公众号并发消息处理*** - Google Patents
一种微信公众号并发消息处理*** Download PDFInfo
- Publication number
- CN107341059B CN107341059B CN201710578068.1A CN201710578068A CN107341059B CN 107341059 B CN107341059 B CN 107341059B CN 201710578068 A CN201710578068 A CN 201710578068A CN 107341059 B CN107341059 B CN 107341059B
- Authority
- CN
- China
- Prior art keywords
- message
- processing
- task
- factory
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 98
- 238000000034 method Methods 0.000 claims abstract description 15
- 238000012795 verification Methods 0.000 claims description 4
- 230000000694 effects Effects 0.000 abstract description 2
- 230000003203 everyday effect Effects 0.000 abstract description 2
- 238000011161 development Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/01—Social networking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/52—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail for supporting social networking services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- Tourism & Hospitality (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- General Health & Medical Sciences (AREA)
- Economics (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及计算机互联网技术领域,具体涉及一种微信公众号并发消息处理机制。其包括微信消息统一接口、消息工厂、事件处理器、消息处理器、异步消息处理器和主动发送消息器。采用本发明的技术方案,在多类型消息(包括文本、图片、语音、视频、图文和地理位置等)处理与大并发处理有明显的效果。如:微信推送过来的视频,视频资料一般都比较大,***会在接收到视频类型的消息以后,直接返回告诉微信已经处理。然后***会并行建立一个处理视频的任务,由这个任务来下载视频,将视频资料保存到本地。微信公众号每天会收到大量各种类型的消息,如何保证处理的效率采用本发明的这套并发消息处理机制非常适用。
Description
技术领域
本发明涉及计算机互联网技术领域,具体涉及一种微信公众号并发消息处理***。
背景技术
腾迅公司提供了微信公众平台以及微信公众号接收消息的相关接口,定义了在开发者模式下,微信公众平台接收普通消息和接收事件推送的数据包格式,以及发送消息的数据包格式。
腾迅公司仅定义了数据包格式和要求,并不提供数据流程以及业务处理,要使用者应用软件开发能力,根据业务自行开发。微信公众平台或者微信公众号使用者不能快速根据需求完成开发者模式的应用,使用复杂,增加了开发难度。
发明内容
针对微信公众号接口要求,第三方平台在收到微信推送过来的消息后,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对应的自动回复内容,生成回复消息。
将回复消息返回给微信,并建立一个消息存储的任务,由这个任务来把接收与回复的消息记录下来。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种微信公众号并发消息处理***,其特征在于,包括:微信消息统一接口:用于接收并处理由微信以及微信公众号推送过来消息;消息工厂:用于接收消息、判断消息类型,自动生成消息参数信息并通过参数信息自动加载对应的处理模块,找到指定消息的处理模块后,将消息参数信息传入指定模块来处理;事件处理器:用于接收由消息工厂发送过来的任务并对该任务进行初步处理,验证任务是否需要快速处理,若接收到的事件不能快速处理回复,就调用异步任务处理;消息处理器:用于接收由所述消息工厂发来的任务并对该任务进行初步处理,验证消息是否有触发关键字回复,若触发需要进行快速处理并返回一条回复消息;在快速处理完成后,自动添加一个异步任务处理任务;异步消息处理器:用于通过线程池来自动分配待处理的任务,若任务需要***自动回复消息就调用主动发送消息器;主动发送消息器:当收到发送消息任务后,先整理消息任务;判断此微信用户是否可以主动发送消息;若可以发送,调用微信发送接口,将消息推送给微信。
2.根据权利要求1中所述的一种微信公众号并发消息处理***,其特征在于,事件类型有:点击菜单,获取粉丝地理位置;消息类型有:文本、图片、语音、视频、图文和地理位置。
3.根据权利要求1或2中所述的一种微信公众号并发消息处理***,其特征在于,将微信公众号推送过来消息由微信消息统一接口进行处理的步骤如下:
(1)、验证微信消息是否从微信公众号服务器发送过来,通过微信服务器白名单进行IP验证;
(2)、验证消息是否正确,通过微信解密规则对消息进行解密,从而验证消息是否正确;
(3)、对解密后的数据进行整理,并通知消息工厂来进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710578068.1A CN107341059B (zh) | 2017-07-16 | 2017-07-16 | 一种微信公众号并发消息处理*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710578068.1A CN107341059B (zh) | 2017-07-16 | 2017-07-16 | 一种微信公众号并发消息处理*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107341059A CN107341059A (zh) | 2017-11-10 |
CN107341059B true CN107341059B (zh) | 2020-08-21 |
Family
ID=60218720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710578068.1A Active CN107341059B (zh) | 2017-07-16 | 2017-07-16 | 一种微信公众号并发消息处理*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107341059B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109377162A (zh) * | 2018-09-25 | 2019-02-22 | 浙江工业大学 | 基于社交软件的智能提醒方法 |
CN110266596B (zh) * | 2019-06-12 | 2023-04-18 | 深圳前海微众银行股份有限公司 | 消息处理方法、装置、设备及计算机可读存储介质 |
CN112612877A (zh) * | 2020-12-16 | 2021-04-06 | 平安普惠企业管理有限公司 | 多类型消息智能答复方法、装置、计算机设备及存储介质 |
CN113257407A (zh) * | 2021-05-31 | 2021-08-13 | 康键信息技术(深圳)有限公司 | 医疗公众号消息的处理方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015035868A1 (en) * | 2013-09-16 | 2015-03-19 | Tencent Technology (Shenzhen) Company Limited | Place of interest recommendation |
CN105515941A (zh) * | 2015-11-25 | 2016-04-20 | 郑州威尔克科技股份有限公司 | 一种在微信开发模式下消息和事件回复的方法和*** |
CN106384249A (zh) * | 2016-09-13 | 2017-02-08 | 四川长虹电器股份有限公司 | 微信公众号平台管理*** |
-
2017
- 2017-07-16 CN CN201710578068.1A patent/CN107341059B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015035868A1 (en) * | 2013-09-16 | 2015-03-19 | Tencent Technology (Shenzhen) Company Limited | Place of interest recommendation |
CN105515941A (zh) * | 2015-11-25 | 2016-04-20 | 郑州威尔克科技股份有限公司 | 一种在微信开发模式下消息和事件回复的方法和*** |
CN106384249A (zh) * | 2016-09-13 | 2017-02-08 | 四川长虹电器股份有限公司 | 微信公众号平台管理*** |
Non-Patent Citations (1)
Title |
---|
微信公众号消息处理-工厂模式的实例;komyluo;《CSDN》;20170314;第2-6页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107341059A (zh) | 2017-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11290555B2 (en) | Push notification delivery system | |
CN107341059B (zh) | 一种微信公众号并发消息处理*** | |
US8352546B1 (en) | Contextual and location awareness for device interaction | |
CN104618226B (zh) | 一种信息处理方法、客户端和服务器 | |
KR101577920B1 (ko) | 위치-기반 그룹 생성 방법, 장치 및 시스템 | |
US10630807B2 (en) | Method and system for loading application- specific interfaces in a social networking application | |
US10560405B2 (en) | Ensuring that all users of a group message receive a response to the group message | |
WO2013049687A1 (en) | Message delivery systems and methods | |
CN109947408B (zh) | 消息推送方法及装置、存储介质和电子设备 | |
US20150281035A1 (en) | Monitoring of Node.JS Applications | |
US10135763B2 (en) | System and method for secure and efficient communication within an organization | |
US20150264095A1 (en) | Web service push method and web service push server and web service providing server performing same | |
US20190268298A1 (en) | Method and system for providing message-based notification | |
US20130150098A1 (en) | Computer To Mobile Two-Way Chat System And Method | |
CN114338793B (zh) | 消息推送方法、装置、电子设备及可读存储介质 | |
CN107749922B (zh) | 用于传输消息的方法、机器可读介质和*** | |
US20210112025A1 (en) | Method and server for processing messages | |
US20180343216A1 (en) | Context driven modification of attachments in a messaging session | |
CN112422402A (zh) | 消息转发的溯源方法、装置、存储介质以及终端 | |
CN112311750A (zh) | 交互方法、装置和电子设备 | |
WO2020251610A1 (en) | Executing real-time message monitoring to identify potentially malicious messages and generate instream alerts | |
CN115567596A (zh) | 云服务资源部署方法、装置、设备及存储介质 | |
KR101634896B1 (ko) | 단말 및 단말의 동작 방법 | |
CN109889590B (zh) | 消息处理方法、装置、客户端和计算机可读介质 | |
US11176021B2 (en) | Messaging systems with improved reliability |
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 |