CN106130868A - 一种回调消息的处理方法和队列管理系统 - Google Patents
一种回调消息的处理方法和队列管理系统 Download PDFInfo
- Publication number
- CN106130868A CN106130868A CN201610388549.1A CN201610388549A CN106130868A CN 106130868 A CN106130868 A CN 106130868A CN 201610388549 A CN201610388549 A CN 201610388549A CN 106130868 A CN106130868 A CN 106130868A
- Authority
- CN
- China
- Prior art keywords
- message
- readjustment
- queue
- management system
- queue management
- 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.)
- Granted
Links
Classifications
-
- 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]
- H04L51/043—Real-time or near real-time messaging, e.g. instant messaging [IM] using or handling presence information
-
- 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/21—Monitoring or handling of messages
- H04L51/224—Monitoring or handling of messages providing notification on incoming messages, e.g. pushed notifications of received messages
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer And Data Communications (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公开一种回调消息的处理方法和队列管理系统,用于保证回调功能的可靠性,提高回调成功率。本发明提供的方法中,队列管理系统从分布式消息队列中读取到第一回调消息,并保留第一回调消息在分布式消息队列中,分布式消息队列中包括:从提供方后台服务器获取到的至少一个回调消息;队列管理系统向使用方后台服务器发送回调请求,回调请求包括:第一回调消息和第一消息标识;队列管理系统判断在预置的时间段内是否接收到使用方后台服务器发送的回调响应;当队列管理系统在时间段内接收到回调响应时,队列管理系统获取回调响应携带的消息标识;若回调响应中携带的消息标识是第一消息标识,队列管理系统将第一消息标识对应的第一回调消息从分布式消息队列中删除掉。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种回调消息的处理方法和队列管理系统。
背景技术
在互联网的云服务中,云服务提供方的后台实现了各类应用场景下的业务逻辑,并定义了相关的网络协议接口供云服务使用方调用,云服务使用方按照协议开发自己的客户端即可实现对应功能,而不需要关注云服务提供方的后台服务器的具体实现。例如,云服务提供方的后台服务器提供了一种发送即时消息的服务,云服务使用方需要使用该功能时,只需要在云服务使用方的客户端中执行发送、接收消息的功能,就可以借助云服务提供方的台服务器完成消息收发。
但有些情况下,云服务使用方希望自身就能够监控具体的业务逻辑,因此云服务使用方也可以搭建自己的使用方后台服务器,并以提供回调接口的方式和云服务提供方的后台服务器进行交互。例如,云服务使用方想要统计消息发送的成功量和失败量,那么可以搭建自己的后台服务器并提供回调接口,当云服务提供方的后台服务器发送消息成功或失败时就可以将相关信息通过回调接口通知到云服务使用方的后台服务器。
在基于云服务提供方和云服务使用方实现的回调过程中,目前可以直接通过超文本传输协议(英文全称:Hyper Text Transfer Protocol,英文简称:HTTP)实现,云服务提供方的后台服务器在适当时机发出HTTP请求进行回调,云服务使用方的后台服务器进行HTTP响应。如果云服务提供方的后台服务器在预定时间内未收到使用方后台服务器的响应,提供方后台服务器可以进行重试,也可以放弃回调,具体取决于双方约定。提供方后台服务器的多次重试会严重影响云服务提供方的正常业务。但是云服务提供方的后台服务器直接发起的HTTP请求并不可靠,无法保证云服务使用方的后台服务器能够收到这个回调。如果云服务提供方和云服务使用方之间的网络(一般是公网)出现网络波动,或者云服务使用方的后台服务器出现短时间故障,那么回调将会丢失,而重试机制可能在系统恢复前就已经结束了。
因此,目前在基于云服务提供方和云服务使用方实现的回调过程中存在回调功能不可靠,回调失败率高的问题。
发明内容
本发明实施例提供了一种回调消息的处理方法和队列管理系统,用于保证回调功能的可靠性,提高回调成功率。
为解决上述技术问题,本发明实施例提供以下技术方案:
第一方面,本发明实施例提供一种回调消息的处理方法,包括:
队列管理系统从分布式消息队列中读取到第一回调消息,并保留所述第一回调消息在所述分布式消息队列中,所述分布式消息队列中包括:从提供方后台服务器获取到的至少一个回调消息,每个所述回调消息对应有一个消息标识;
所述队列管理系统向使用方后台服务器发送回调请求,所述回调请求包括:所述第一回调消息和所述第一回调消息对应的第一消息标识;
所述队列管理系统判断在预置的时间段内是否接收到所述使用方后台服务器发送的回调响应;
当所述队列管理系统在所述时间段内接收到所述回调响应时,所述队列管理系统获取所述回调响应中携带的消息标识;
若所述回调响应中携带的消息标识是所述第一消息标识,所述队列管理系统将所述第一消息标识对应的所述第一回调消息从所述分布式消息队列中删除掉。
第二方面,本发明实施例还提供一种队列管理系统,包括:
回调消息读取模块,用于从分布式消息队列中读取到第一回调消息,并保留所述第一回调消息在所述分布式消息队列中,所述分布式消息队列中包括:从提供方后台服务器获取到的至少一个回调消息,每个所述回调消息对应有一个消息标识;
回调请求发送模块,用于向使用方后台服务器发送回调请求,所述回调请求包括:所述第一回调消息和所述第一回调消息对应的第一消息标识;
判断模块,用于判断在预置的时间段内是否接收到所述使用方后台服务器发送的回调响应;
回调响应解析模块,用于当所述队列管理系统在所述时间段内接收到所述回调响应时,获取所述回调响应中携带的消息标识;
回调消息管理模块,用于若所述回调响应中携带的消息标识是所述第一消息标识,将所述第一消息标识对应的所述第一回调消息从所述分布式消息队列中删除掉。
从以上技术方案可以看出,本发明实施例具有以下优点:
在本发明实施例中,队列管理系统从分布式消息队列中读取到第一回调消息,并保留第一回调消息在分布式消息队列中,分布式消息队列中包括:从提供方后台服务器获取到的至少一个回调消息,每个回调消息对应有一个消息标识,队列管理系统向使用方后台服务器发送回调请求,回调请求包括:第一回调消息和第一回调消息对应的第一消息标识,队列管理系统判断在预置的时间段内是否接收到使用方后台服务器发送的回调响应,当队列管理系统在时间段内接收到回调响应时,队列管理系统获取回调响应中携带的消息标识,若回调响应中携带的消息标识是第一消息标识,队列管理系统将第一消息标识对应的第一回调消息从分布式消息队列中删除掉。由于本发明实施例中提供方后台服务器提供的回调消息都保存在分布式消息队列中,队列管理系统也是从分布式消息队列中读取出第一回调消息,为了保证回调功能的可靠性,在分布式消息队列中仍保存有第一回调消息,当队列管理系统从使用方后台服务器获取到第一消息标识之后才会删除分布式消息队列中的第一回调消息。本发明实施例中提供方后台服务器的正常业务不会受到回调过程的影响,队列管理系统通过实时维护分布式消息队列可以保证第一回调消息能够发送到使用方后台服务器,因此可以保证回调功能的可靠性,提高回调成功率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种回调消息的处理方法的流程方框示意图;
图2为本发明实施例提供的另一种回调消息的处理方法的流程方框示意图;
图3为本发明实施例提供的队列管理系统的一种实现场景示意图;
图4为本发明实施例提供的队列管理系统实现回调消息写入的一种实现场景示意图;
图5为本发明实施例提供的队列管理系统实现回调消息读出的一种实现场景示意图;
图6-a为本发明实施例提供的一种队列管理系统的组成结构示意图;
图6-b为本发明实施例提供的另一种队列管理系统的组成结构示意图;
图6-c为本发明实施例提供的另一种队列管理系统的组成结构示意图;
图6-d为本发明实施例提供的另一种队列管理系统的组成结构示意图;
图6-e为本发明实施例提供的另一种队列管理系统的组成结构示意图;
图7为本发明实施例提供的队列管理系统通过服务器实现的组成结构示意图。
具体实施方式
本发明实施例提供了一种回调消息的处理方法和队列管理系统,用于保证回调功能的可靠性,提高回调成功率。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
以下分别进行详细说明。
本发明回调消息的处理方法的一个实施例,具体可以应用于基于云服务提供方和云服务使用方实现的回调过程,请参阅图1所示,本发明一个实施例提供的回调消息的处理方法,可以包括如下步骤:
101、队列管理系统从分布式消息队列中读取到第一回调消息,并保留第一回调消息在分布式消息队列中,分布式消息队列中包括:从提供方后台服务器获取到的至少一个回调消息,每个回调消息对应有一个消息标识。
在本发明实施例中,分布式消息队列可以由队列管理系统来实时维护,分布式消息队列中存储有提供方后台服务器提供的至少一个回调消息。该提供方后台服务器具体可以是云服务提供方中设置的后台,提供方后台服务器可以根据云服务使用方的要求来发送回调消息。本发明实施例提供方后台服务器并不会直接向云服务使用方来发送回调消息,而是通过本发明实施例提供的队列管理系统来完成回调消息的发送,而不会增加提供方后台服务器的负荷,保证后方服务器正常的业务功能。
在本发明实施例中,队列管理系统用于向使用方后台服务器发送回调消息,队列管理系统首先从分布式消息队列中读取出回调消息,为便于描述,将读取到的回调消息定义为第一回调消息,本发明实施例中队列管理系统从分布式消息队列中读取到第一回调消息是复制读取,在分布式消息队列中仍保留该第一回调消息,例如队列管理系统将分布式消息队列中的第一回调消息复制到内存缓冲区,队列管理系统可以读取到第一回调消息。本发明实施例中队列管理系统读取分布式消息队列可以根据该队列的生成方式来读取,例如可以是按照先入先出原则来读取,不限定的是,也可以采用其它特定顺序来读取,或者使用特定的算法来确定每次从分布式消息队列中哪个位置开始读取。本发明实施例中队列管理系统读取到的第一回调消息时,并不是同时从分布式消息队列中删除掉,以避免回调消息传送失败时第一回调消息的丢失,提高回调消息的管理可靠性。
在本发明的一些实施例中,本发明实施例提供的回调消息的处理方法中,还可以包括如下步骤:
A1、队列管理系统从提供方后台服务器获取到回调消息,并将获取到的回调消息写入到分布式消息队列中。
其中,队列管理系统除了执行读取回调消息,还可以与提供方后台服务器进行实时的交互,若提供方后台服务器产生有回调消息,则队列管理系统可以实时的从提供方后台服务器获取到回调消息,队列管理系统将该回调消息写入到分布式消息队列中。
进一步的,在本发明的一些实施例中,步骤A1队列管理系统从提供方后台服务器获取到回调消息,并将获取到的回调消息写入到分布式消息队列中之后,本发明实施例提供的回调消息的处理方法中,还可以包括如下步骤:
B1、队列管理系统判断回调消息写入分布式消息队列的写入频率是否超过预置的回调频率;
B2、若写入频率超过回调频率,队列管理系统暂缓从分布式消息队列中读取回调消息。
其中,后方服务器和队列管理系统之间约定设置一回调频率,队列管理系统可以判断回调消息写入分布式消息队列的写入频率是否超过预置的回调频率,若写入频率超过回调频率,则说明队列管理系统写入分布式消息队列的回调消息过多,若队列管理系统不停的读取出回调消息并向使用方后台服务器推送,可能会加重使用方后台服务器的负荷,此时队列管理系统可以暂缓从分布式消息队列中读取回调消息。举例说明,云服务的提供方后台服务器可以和云服务的使用方后台服务器约定一个最大的回调频率,以避免回调请求出现尖峰时压垮云服务的使用方后台服务器。如果写入量在短时间内超过了最大的回调频率,可以暂缓读取,起到削峰的作用。该回调频率可以是以间隔的方式来控制,也可以是秒(或分钟等)内的最大请求来控制。在云服务提供方和云服务适用方的回调过程中,也有可能由于业务特点,回调请求量并不均匀,会在某个时间点出现尖峰,短时间内的大量请求超过了云服务的提供方后台服务器的处理能力,导致部分HTTP请求未被正确接收处理。而本发明实施例中后天服务器只需要将回调消息存储到分布式消息队列中即可,队列管理系统可以自动调节发送回调请求的快慢,从而缓解这种尖峰,起到削峰的作用。
在本发明的一些实施例中,步骤101队列管理系统从分布式消息队列中读取到第一回调消息,并保留第一回调消息在分布式消息队列中之后,本发明实施例提供的回调消息的处理方法中,还可以包括如下步骤:
C1、队列管理系统将保留在分布式消息队列中的第一回调消息标记为未响应状态;
C2、队列管理系统从分布式消息队列中读取没有被标记为未响应状态的第二回调消息,并向使用方后台服务器发送读取到的第二回调消息。
其中,队列管理系统为了管理分布式消息队列,还可以对已经读取的第一回调消息进行标记,在分布式消息队列中第一回调消息可以标记为未响应状态,则队列管理系统从分布式消息队列中读取回调消息时可以检查回调消息的标记,如果某个回调消息标记为未响应状态,则说明该回调消息已经被读取过了,不需要重复读取,而是可以读取下一个回调消息,例如从分布式消息队列中读取没有被标记为未响应状态的第二回调消息,并向使用方后台服务器发送读取到的第二回调消息,对于第二回调消息的处理可以参阅本发明实施例对第一回调消息的处理流程,此处不再赘述。
102、队列管理系统向使用方后台服务器发送回调请求,回调请求包括:第一回调消息和第一回调消息对应的第一消息标识。
在本发明实施例中,队列管理系统读取到第一回调消息后,队列管理系统可以向后方客户端推送该第一回调消息,具体的,队列管理系统可以发送回调请求,在该回调请求中携带有第一消息标识,以使使用方后台服务器确定是接收到了哪个回调消息。本发明实施例中使用方后台服务器是与提供方后台服务器对应的后台服务器,使用方后台服务器可以用于接收回调消息,具体的,使用方后台服务器可以是云服务使用方中部署的后台。
103、队列管理系统判断在预置的时间段内是否接收到使用方后台服务器发送的回调响应。
在本发明实施例中,队列管理系统向使用方后台服务器推送回调请求之后,队列管理系统还需要监控回调请求是否成功到达使用方后台服务器。队列管理系统可以按照预设的时间段判断在该时间段内是否接收到使用方后台服务器发送的回调响应。例如,队列管理系统判断在预定时间内(比如30秒)是否收到回调响应。
在本发明实施例中,队列管理系统向使用方后台服务器发送回调请求之后,使用方后台服务器接收队列管理系统发送的回调请求,当使用方后台服务器成功接收到回调请求时,使用方后台服务器从回调请求中提取出第一回调消息和第一回调消息对应的第一消息标识,使用方后台服务器向队列管理系统发送回调响应,该回调响应携带第一消息标识。若使用方后台服务器没有成功接收到回调请求,使用方后台服务器可以不做响应,也可以回复接收失败,具体取决于实现场景。需要说明的是,在本发明实施例中使用方后台服务器接收到的回调请求中携带有哪个消息响应,使用方后台服务器发送的回调响应中就携带哪个消息响应。
在本发明的一些实施例中,步骤103队列管理系统判断在预置的时间段内是否接收到使用方后台服务器发送的回调响应,具体可以包括如下步骤:
D1、队列管理系统监测队列管理系统和使用方后台服务器之间建立的WebSocket连接,判断在时间段内是否接收到通过WebSocket连接传送的回调响应。
其中,队列管理系统可以和使用方后台服务器之间建立的WebSocket连接,即队列管理系统和使用方后台服务器之间可以通过WebSocket协议进行通信,实现队列管理系统与使用方后台服务器之间的全双工通信(英文名称:full-duplex),例如,队列管理系统可以通过HTTP请求完成与使用方后台服务器的握手。不限定的是,本发明实施例中还可以使用HTTP连接,此处不做限定。
104、当队列管理系统在时间段内接收到回调响应时,队列管理系统获取回调响应中携带的消息标识。
在本发明实施例中,队列管理系统通过步骤103的判断可知,若判断结果为在时间段内接收到回调响应,队列管理系统解析该回调响应,可以获取回调响应中携带的消息标识。需要说的是,在本发明实施例中回调响应是使用方后台服务器对接收到的回调消息的反馈,则使用方后台服务器接收到哪个回调消息就会反馈相应的消息标识,因此队列管理系统可以进一步执行后续步骤105。
105、若回调响应中携带的消息标识是第一消息标识,队列管理系统将第一消息标识对应的第一回调消息从分布式消息队列中删除掉。
在本发明实施例中,队列管理系统从回调响应中获取其携带的消息标识,然后确定回调响应中携带的消息标识是否是第一消息标识,若回调响应中携带的消息标识是第一消息标识,则说明使用方后台服务器成功接收到第一回调消息,此时队列管理系统将第一消息标识对应的第一回调消息从分布式消息队列中删除掉。
在本发明的一些实施例中,步骤104队列管理系统获取回调响应中携带的消息标识之后,本发明实施例提供的回调消息的处理方法中,还可以包括如下步骤:
E1、若回调响应中携带的消息标识不是第一消息标识,判断回调响应中携带的消息标识对应的回调消息是否已经发送给使用方后台服务器;
E2、若回调响应中携带的消息标识对应的回调消息已经发送给使用方后台服务器,将回调响应中携带的消息标识对应的回调消息从分布式消息队列中删除掉;
E3、若回调响应中携带的消息标识对应的回调消息还未发送给使用方后台服务器,或回调响应中携带的消息标识对应的回调消息不存在于分布式消息队列中,则对回调响应中携带的消息标识不做处理。
其中,步骤104中队列管理系统从回调响应中解析出消息标识,该回调响应中携带的消息标识可能不是第一消息标识,例如使用方后台服务器收到了第二回调消息,则该使用方后台服务器会向队列管理系统发送第二消息标识,队列管理系统接收到回调响应,从而回调响应中解析出来了第二消息标识,进一步的判断出该第二回调消息已经发送给了使用方后台服务器,则队列管理系统将第二回调消息从分布式消息队列中删除掉,若回调响应中携带的消息标识对应的回调消息还未发送给使用方后台服务器,或回调响应中携带的消息标识对应的回调消息不存在于分布式消息队列中,说明使用方后台服务器发送的回调响应是无效的响应,队列管理系统可以不做任何处理,即对回调响应中携带的消息标识不做处理,该队列管理系统在这种情况下可以丢弃接收到的回调响应。
通过前述实施例对本发明的举例说明可知,队列管理系统从分布式消息队列中读取到第一回调消息,并保留第一回调消息在分布式消息队列中,分布式消息队列中包括:从提供方后台服务器获取到的至少一个回调消息,每个回调消息对应有一个消息标识,队列管理系统向使用方后台服务器发送回调请求,回调请求包括:第一回调消息和第一回调消息对应的第一消息标识,队列管理系统判断在预置的时间段内是否接收到使用方后台服务器发送的回调响应,当队列管理系统在时间段内接收到回调响应时,队列管理系统获取回调响应中携带的消息标识,若回调响应中携带的消息标识是第一消息标识,队列管理系统将第一消息标识对应的第一回调消息从分布式消息队列中删除掉。由于本发明实施例中提供方后台服务器提供的回调消息都保存在分布式消息队列中,队列管理系统也是从分布式消息队列中读取出第一回调消息,为了保证回调功能的可靠性,在分布式消息队列中仍保存有第一回调消息,当队列管理系统从使用方后台服务器获取到第一消息标识之后才会删除分布式消息队列中的第一回调消息。本发明实施例中提供方后台服务器的正常业务不会受到回调过程的影响,队列管理系统通过实时维护分布式消息队列可以保证第一回调消息能够发送到使用方后台服务器,因此可以保证回调功能的可靠性,提高回调成功率。
前述实施例介绍了本发明回调消息的处理方法,接下来请参阅图2所示,本发明另一个实施例提供的回调消息的处理方法,可以包括如下步骤:
201、队列管理系统按照先入先出原则从分布式消息队列的头部读取到第一回调消息,并保留第一回调消息在分布式消息队列中,分布式消息队列中包括:从提供方后台服务器获取到的至少一个回调消息,每个回调消息对应有一个消息标识。
其中,分布式消息队列中按照先入先出原则保存有提供方后台服务器提供的多个回调消息,第一回调消息处于分布式消息队列的头部,队列管理系统可以从分布式消息队列的头部取出第一回调消息。
202、队列管理系统向使用方后台服务器发送回调请求,回调请求包括:第一回调消息和第一回调消息对应的第一消息标识。
203、队列管理系统判断在预置的时间段内是否接收到使用方后台服务器发送的回调响应。
其中,步骤202至步骤203与前述实施例中步骤102至步骤103相类似,此处不再赘述,在步骤203之后可以分别执行步骤204和步骤205
204、当队列管理系统在时间段内没有接收到回调响应时,队列管理系统将第一回调消息转移到分布式消息队列的尾部。
其中,步骤203中队列管理系统监测在预置的时间段内是否接收到使用方后台服务器发送的回调响应,若在该时间段没有收到任何响应,则确定使用方后台服务器没有收到回调请求,那么队列管理系统发送的第一回调消息就没有被正确接收,此时需要将第一回调消息转移到分布式消息队列的尾部。队列管理系统继续不断的从分布式消息队列中取出回调消息,并通过步骤201至步骤204继续执行回调功能。
205、当队列管理系统在时间段内接收到回调响应时,队列管理系统获取回调响应中携带的消息标识。
其中,步骤205与前述实施例中步骤104相类似,此处不再赘述。
206、队列管理系统获取回调响应中携带的消息标识之后,若队列管理系统在时间段结束时还没有获取到使用方后台服务器发送的第一消息标识,队列管理系统将第一回调消息转移到分布式消息队列的尾部。
其中,队列管理系统对回调响应进行解析后,确定回调响应中携带的消息标识不是第一消息标识,并且一直到预置的时间段结束,队列管理系统仍未收到第一消息标识,则说明使用方后台服务器并没有收到第一回调消息,队列管理系统将第一回调消息转移到分布式消息队列的尾部,以备下次轮询到该第一回调消息读取时再次发送给使用方后台服务器。
在本发明的一些实施例中,步骤203和/或步骤206队列管理系统将第一回调消息转移到分布式消息队列的尾部之后,本发明实施例还可以包括如下步骤:
F1、队列管理系统重新从分布式消息队列中读取到第一回调消息,并保留第一回调消息在分布式消息队列中;
F2、队列管理系统重新向使用方后台服务器发送回调请求;
F3、队列管理系统重新判断在预置的时间段内是否接收到使用方后台服务器发送的回调响应;
F4、若队列管理系统在预置的时间段结束时还没有获取到使用方后台服务器发送的第一消息标识,队列管理系统将第一回调消息再次转移到分布式消息队列的尾部。
其中,队列管理系统通过轮询读取分布式消息队列,若分布式消息队列中又轮到读取第一回调消息,则执行步骤F1,F2至F4的详细实现请参阅前述实施例。
在本发明的另一些实施例中,步骤F3队列管理系统重新判断在预置的时间段内是否接收到使用方后台服务器发送的回调响应之后,本发明实施例还可以包括如下步骤:
G1、若队列管理系统在预置的时间段结束时还没有获取到使用方后台服务器发送的第一消息标识,队列管理系统判断重新发送回调请求的发送次数是否超过阈值,若发送次数超过阈值,队列管理系统将第一回调消息从分布式消息队列中删除掉,并将第一回调消息存储到队列管理系统的存储器中。
其中,为了解决队列管理系统对某个回调消息的多次发送,可以设置阈值,对发送次数进行监控,若发送次数超过阈值,则队列管理系统将第一回调消息从分布式消息队列中删除掉,并将第一回调消息存储到队列管理系统的存储器中。通过对发送次数设置阈值可以避免对同一个回调消息的多次发送,可以节省资源用于发送其它的回调消息。
通过以上实施例对本发明实施例的描述可知,由于本发明实施例中提供方后台服务器提供的回调消息都保存在分布式消息队列中,队列管理系统也是按照先入先出原则从分布式消息队列中读取出第一回调消息,为了保证回调功能的可靠性,在分布式消息队列中仍保存有第一回调消息,当队列管理系统从使用方后台服务器获取到第一消息标识之后才会删除分布式消息队列中的第一回调消息,当第一回调消息没有成功推送时,还可以通过分布式消息队列继续推送。本发明实施例中提供方后台服务器的正常业务不会受到回调过程的影响,队列管理系统通过实时维护分布式消息队列可以保证第一回调消息能够发送到使用方后台服务器,因此可以保证回调功能的可靠性,提高回调成功率。
为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。
请参阅图2所示,为本发明实施例提供的队列管理系统的一种实现场景示意图。本发明实施例提出了如下方案,通过在云服务的提供方后台服务器和云服务的使用方后台服务器之间增加一个队列管理系统,该队列管理系统可以包括:消息队列生产者(后续简称:生产者)、消息队列存储模块、消息队列消费者(后续简称:消费者),实现了可靠的回调机制。在正常情况下,由生产者将回调请求写入消息队列存储模块,并由消费者取出后送达云服务的使用方后台服务器,云服务的使用方后台服务器向消费者确认已收到该回调请求,然后消费者发送回调请求给消息队列管理模块,消息队列存储模块在分布式消息队列中删除对应的回调请求。如果出现异常情况,比如云服务提供方和云服务使用方之间的网络环境出现波动,或者云服务的使用方后台服务器出现短时故障,那么消费者发出的回调请求将得不到云服务的使用方后台服务器的确认。
本发明实施例提供的队列管理系统,可以基于分布式消息队列使回调请求可靠到达云服务的使用方后台服务器。该队列管理系统中可以包括三个模块:消息队列生产者、消息队列存储模块、消息队列消费者。主要流程如下:
S01、云服务适用方的客户端通过发送消息接口发送消息给云服务的提供方后台服务器,提供方后台服务器通过服务接收到消息,然后云服务提供方在准备进行回调时,将回调请求作为消息内容,发往生产者。
S02、生产者将回调请求写入到分布式消息队列中。生产者写入的回调消息会被维护为一个先入先出的分布式消息队列,并且每条回调消息都会有一个消息标识,例如该消息标识可以是消息序号,用于唯一标识该回调消息,一般是一个无符号整数。如图4所示,比如生产者先后写入MsgA、MsgB、MsgC共3条消息,那么分布式消息队列中的内容会发生变化,每次写入一个回调消息,则分布式消息队列的总长度会不断增加。
S03、云服务的使用方后台服务器使用WebSocket协议与消费者建立通信连接,然后等待消费者的主动推送。使用WebSocket连接的目的是使连接的双方可以自由双向通信,而不必受到HTTP协议中1个请求对应1个响应的限制。消息队列存储模块中将会记录应读取的回调请求,消费者可以在系统恢复正常后再次读取出该回调请求发送给云服务的使用方后台服务器。这样就能避免回调请求在异常情况下丢失。
本发明实施例中,生产者和提供方后台服务器之间约定具体使用的通信接口,使提供方后台服务器不需要关心消息队列的工作原理,生产者可以在内部做一些优化逻辑,比如将多个有关联的回调请求聚合在一起,作为一条消息发给分布式消息队列,从而减少消息数量,而提供方后台服务器不需要关心这些优化。
S04、消费者从分布式消息队列中取出回调消息和对应的消息序号。回调消息的取出顺序和生产者写入的顺序一致。已取出的回调消息在得到响应之前,会被标记为“未响应”状态,这种状态下的回调消息会继续存储在分布式消息队列中,但不会被读取。如果在预定时间内(比如30秒)得到回调响应,那么该回调消息就会从分布式消息队列中删除,如果在预定时间内得不到回调响应,该回调消息又会被设置为正常状态并回到分布式消息队列的尾部,便于消费者再次从分布式消息队列中读取到该回调消息。
举例说明,回调消息A被读出后的一定时间内会处于“未响应”状态。在这个状态下,如果消费者进行读取操作,那么只会读到别的回调消息,不会读到回调消息A;如果分布式消息队列中只有回调消息A,那么消费者将等待,如果收到回调响应,那么分布式消息队列就把回调消息A删掉,如果响应超时了,那么回调消息A会回复到普通状态以供再次读取,例如回调消息A会回到分布式消息队列的尾部,也就是说其它消息都读完才会再次读到回调消息A。
如步骤S02中所举的例子,假如消费者进行1次读取操作,将会读取到MsgA,随后推送给云服务的使用方后台服务器。消费者立即再进行1次读取操作,将会读取到MsgB,随后推送给云服务的使用方后台服务器。在MsgA和MsgB各自的响应超时时间内,只有MsgB得到了云服务使用方的响应,消费者将会通知消息队列删除MsgB,MsgA的状态变化由分布式消息队列内部自行维护。以上场景所对应的消息队列的变化情况如图5所示。消息队列存储模块对分布式消息队列的维护包括消息状态的变更(普通、未响应),以及响应超时后回到队列的位置。是否有其它维护方式取决于分布式消息队列的设计,比如分布式消息队列可以提供配置,由用户决定响应超时时间、回到队列的位置、若干次响应失败后自动丢掉等等。这些对整个系统的灵活性、可靠性有影响。
S05、云服务的使用方后台服务器收到回调消息后,将消息序号发回给消费者,表示已收到对应的回调消息。
S06、消费者从分布式消息队列中删除对应的回调消息。
在以上的流程中,生产者和消费者之间是异步的,生产者只负责转发回调请求,消费者只负责读取-推送请求。消费者可以采用轮询的方式检查队列中是否有回调消息,有的话就读出来,然后发送给云服务的使用方后台服务器,之后又回到轮询中。
对消费者来讲,读取-推送消息和接收响应是两个异步的操作。在读取-推送之后,消费者不需要等待云服务使用方的响应,直接可以进行下一次读取-推送操作,简单的实现就是轮询,队列为空就等待一定时间(比如50毫秒),然后再次尝试读取。也可能是阻塞式,例如读取操作,如果队列中有消息就马上读取到,进入发送请求,如果队列为空就一直阻塞在读取操作中,直到生产者写入消息了,读取操作才结束,并读到新的回调消息。
而在消费者接收到回调响应后,也不需要关心该响应的消息序号是否有效,只需要向消息队列存储模块发送删除请求即可,消息队列存储模块会检查其有效性。如果发生响应超时,消费者也不需要关注,消息队列存储模块会维护超时消息的状态变更。消费者每次读到一条消息,消息队列同时返回一个消息序号,和这条消息存在对应关系。云服务的使用方后台服务器在确认时,要带上这个消息序号,以表明它是在确认哪条回调消息。
本发明实施例中,可以使回调请求在送达云服务使用方后才从分布式消息队列中删除,而且可以实现均匀的回调请求推送,解决了目前方案中回调不可靠的缺陷。本发明实施例中队列管理系统可以使用多种分布式消息存储系统来实现,例如Apache ActiveMQ、Apache Kafka、RabbitMQ、Redis等。分布式消息队列可以保证消息的先后顺序,以及支持确认机制,其它存储系统可能需要额外的逻辑代码来实现这些特性。
在本发明的一些实施例中,云服务的提供方后台服务器可以和云服务的使用方后台服务器约定一个最大的回调频率,以避免回调请求出现尖峰时压垮使用者后台。如果生产者的写入量在短时间内超过了约定的回调频率,消费者可以暂缓读取,起到削峰的作用。
如果云服务的使用方后台服务器长时间故障,回调消息将会逐渐累积,因此本发明实施例中还可以选择增加一些管理策略以避免消息队列被重发消息填满。比如多次响应失败(比如10次)的消息不再自动添加到消息队列尾部,而是存储到磁盘,在较长的时间(比如12小时)后才重新回到消息队列尾部,再次响应失败则直接删除。具体实现需要消息队列存储模块的支持,在生产者和消费者模块中添加额外的管理功能。同一个云服务会有多个使用方,每个使用方都有自身的回调接口。本发明实施例中还可以选择在消息队列存储模块中为每一个使用方分配一条分布式消息队列,而不是将所有使用方的回调请求都发往同一个分布式消息队列,这样更方便监控,也方便为不同的队列制定专门的管理策略。本发明实施例提供的队列管理系统在互联网云服务中,通过使用分布式消息队列的存储和确认机制,实现了可靠的回调功能。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。
请参阅图6-a所示,本发明实施例提供的一种队列管理系统600,可以包括:回调消息读取模块601、回调请求发送模块602、判断模块603、回调响应解析模块604和回调消息管理模块605,其中,
回调消息读取模块601,用于从分布式消息队列中读取到第一回调消息,并保留所述第一回调消息在所述分布式消息队列中,所述分布式消息队列中包括:从提供方后台服务器获取到的至少一个回调消息,每个所述回调消息对应有一个消息标识;
回调请求发送模块602,用于向使用方后台服务器发送回调请求,所述回调请求包括:所述第一回调消息和所述第一回调消息对应的第一消息标识;
判断模块603,用于判断在预置的时间段内是否接收到所述使用方后台服务器发送的回调响应;
回调响应解析模块604,用于当所述队列管理系统在所述时间段内接收到所述回调响应时,获取所述回调响应中携带的消息标识;
回调消息管理模块605,用于若所述回调响应中携带的消息标识是所述第一消息标识,将所述第一消息标识对应的所述第一回调消息从所述分布式消息队列中删除掉。
在本发明的一些实施例中,所述回调消息管理模块605,还用于所述回调响应解析模块604获取所述回调响应中携带的消息标识之后,若所述回调响应中携带的消息标识不是所述第一消息标识,判断所述回调响应中携带的消息标识对应的回调消息是否已经发送给所述使用方后台服务器;若所述回调响应中携带的消息标识对应的回调消息已经发送给所述使用方后台服务器,将所述回调响应中携带的消息标识对应的回调消息从所述分布式消息队列中删除掉;若所述回调响应中携带的消息标识对应的回调消息还未发送给所述使用方后台服务器,或所述回调响应中携带的消息标识对应的回调消息不存在于所述分布式消息队列中,则对所述回调响应中携带的消息标识不做处理。
在本发明的一些实施例中,所述回调消息读取模块601,具体用于按照先入先出原则从所述分布式消息队列的头部读取到第一回调消息。
在本发明的一些实施例中,所述回调消息管理模块605,还用于所述判断模块603判断在预置的时间段内是否接收到所述使用方后台服务器发送的回调响应之后,当所述队列管理系统在所述时间段内没有接收到所述回调响应时,将所述第一回调消息转移到所述分布式消息队列的尾部。
在本发明的一些实施例中,所述回调消息管理模块605,还用于所述回调消息解析模块604获取所述回调响应中携带的消息标识之后,若所述队列管理系统在所述时间段结束时还没有获取到所述使用方后台服务器发送的第一消息标识,将所述第一回调消息转移到所述分布式消息队列的尾部。
在本发明的一些实施例中,所述回调消息读取模块601,还用于所述回调消息管理模块605将所述第一回调消息转移到所述分布式消息队列的尾部之后,重新从所述分布式消息队列中读取到所述第一回调消息,并保留所述第一回调消息在所述分布式消息队列中;
所述回调请求发送模块602,还用于重新向使用方后台服务器发送所述回调请求;
所述判断模块603,还用于重新判断在预置的时间段内是否接收到所述使用方后台服务器发送的回调响应;
所述回调消息管理模块605,还用于若所述队列管理系统在所述时间段结束时还没有获取到所述使用方后台服务器发送的第一消息标识,将所述第一回调消息再次转移到所述分布式消息队列的尾部。
在本发明的一些实施例中,请参阅图6-b所示,所述队列管理系统600,还包括:回调请求控制模块606,其中,
所述回调请求控制模块606,还用于所述判断模块603重新判断在预置的时间段内是否接收到所述使用方后台服务器发送的回调响应之后,若所述队列管理系统在所述时间段结束时还没有获取到所述使用方后台服务器发送的第一消息标识,判断重新发送所述回调请求的发送次数是否超过阈值;
所述回调消息管理模块605,还用于若所述发送次数超过阈值,将所述第一回调消息从所述分布式消息队列中删除掉,并将所述第一回调消息存储到所述队列管理系统的存储器中。
在本发明的一些实施例中,所述判断模块603,具体用于监测所述队列管理系统和所述使用方后台服务器之间建立的WebSocket连接,判断在所述时间段内是否接收到通过所述WebSocket连接传送的回调响应。
在本发明的一些实施例中,请参阅图6-c所示,所述队列管理系统600,还包括:消息状态管理模块607,用于所述回调消息读取模块601从分布式消息队列中读取到第一回调消息,并保留所述第一回调消息在所述分布式消息队列中之后,将保留在所述分布式消息队列中的第一回调消息标记为未响应状态;
所述回调消息读取模块601,还用于从所述分布式消息队列中读取没有被标记为未响应状态的第二回调消息,并向所述使用方后台服务器发送读取到的第二回调消息。
在本发明的一些实施例中,请参阅图6-d所示,所述队列管理系统600,还包括:回调消息生成模块608,用于从提供方后台服务器获取到回调消息,并将获取到的回调消息写入到分布式消息队列中。
在本发明的一些实施例中,请参阅图6-e所示,所述队列管理系统600,还包括:回调消息控制模块609,用于所述回调消息读取模块601从提供方后台服务器获取到回调消息,并将获取到的回调消息写入到分布式消息队列中之后,判断回调消息写入所述分布式消息队列的写入频率是否超过预置的回调频率;若所述写入频率超过所述回调频率,暂缓从所述分布式消息队列中读取回调消息。
通过以上对本发明实施例的描述可知,队列管理系统从分布式消息队列中读取到第一回调消息,并保留第一回调消息在分布式消息队列中,分布式消息队列中包括:从提供方后台服务器获取到的至少一个回调消息,每个回调消息对应有一个消息标识,队列管理系统向使用方后台服务器发送回调请求,回调请求包括:第一回调消息和第一回调消息对应的第一消息标识,队列管理系统判断在预置的时间段内是否接收到使用方后台服务器发送的回调响应,当队列管理系统在时间段内接收到回调响应时,队列管理系统获取回调响应中携带的消息标识,若回调响应中携带的消息标识是第一消息标识,队列管理系统将第一消息标识对应的第一回调消息从分布式消息队列中删除掉。由于本发明实施例中提供方后台服务器提供的回调消息都保存在分布式消息队列中,队列管理系统也是从分布式消息队列中读取出第一回调消息,为了保证回调功能的可靠性,在分布式消息队列中仍保存有第一回调消息,当队列管理系统从使用方后台服务器获取到第一消息标识之后才会删除分布式消息队列中的第一回调消息。本发明实施例中提供方后台服务器的正常业务不会受到回调过程的影响,队列管理系统通过实时维护分布式消息队列可以保证第一回调消息能够发送到使用方后台服务器,因此可以保证回调功能的可靠性,提高回调成功率。
图7是本发明实施例提供的一种队列管理系统通过服务器实现的结构示意图,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)1122(例如,一个或一个以上处理器)和存储器1132,一个或一个以上存储应用程序1142或数据1144的存储介质1130(例如一个或一个以上海量存储设备)。其中,存储器1132和存储介质1130可以是短暂存储或持久存储。存储在存储介质1130的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1122可以设置为与存储介质1130通信,在服务器1100上执行存储介质1130中的一系列指令操作。
服务器1100还可以包括一个或一个以上电源1126,一个或一个以上有线或无线网络接口1150,一个或一个以上输入输出接口1158,和/或,一个或一个以上操作系统1141,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的回调消息的处理方法步骤可以基于该图7所示的服务器结构。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (22)
1.一种回调消息的处理方法,其特征在于,包括:
队列管理系统从分布式消息队列中读取到第一回调消息,并保留所述第一回调消息在所述分布式消息队列中,所述分布式消息队列中包括:从提供方后台服务器获取到的至少一个回调消息,每个所述回调消息对应有一个消息标识;
所述队列管理系统向使用方后台服务器发送回调请求,所述回调请求包括:所述第一回调消息和所述第一回调消息对应的第一消息标识;
所述队列管理系统判断在预置的时间段内是否接收到所述使用方后台服务器发送的回调响应;
当所述队列管理系统在所述时间段内接收到所述回调响应时,所述队列管理系统获取所述回调响应中携带的消息标识;
若所述回调响应中携带的消息标识是所述第一消息标识,所述队列管理系统将所述第一消息标识对应的所述第一回调消息从所述分布式消息队列中删除掉。
2.根据权利要求1所述的方法,其特征在于,所述队列管理系统获取所述回调响应中携带的消息标识之后,所述方法还包括:
若所述回调响应中携带的消息标识不是所述第一消息标识,所述队列管理系统判断所述回调响应中携带的消息标识对应的回调消息是否已经发送给所述使用方后台服务器;
若所述回调响应中携带的消息标识对应的回调消息已经发送给所述使用方后台服务器,将所述回调响应中携带的消息标识对应的回调消息从所述分布式消息队列中删除掉;
若所述回调响应中携带的消息标识对应的回调消息还未发送给所述使用方后台服务器,或所述回调响应中携带的消息标识对应的回调消息不存在于所述分布式消息队列中,则对所述回调响应中携带的消息标识不做处理。
3.根据权利要求1所述的方法,其特征在于,所述队列管理系统从分布式消息队列中读取到第一回调消息,包括:
所述队列管理系统按照先入先出原则从所述分布式消息队列的头部读取到第一回调消息。
4.根据权利要求3所述的方法,其特征在于,所述队列管理系统判断在预置的时间段内是否接收到所述使用方后台服务器发送的回调响应之后,所述方法还包括:
当所述队列管理系统在所述时间段内没有接收到所述回调响应时,所述队列管理系统将所述第一回调消息转移到所述分布式消息队列的尾部。
5.根据权利要求3所述的方法,其特征在于,所述队列管理系统获取所述回调响应中携带的消息标识之后,所述方法还包括:
若所述队列管理系统在所述时间段结束时还没有获取到所述使用方后台服务器发送的第一消息标识,所述队列管理系统将所述第一回调消息转移到所述分布式消息队列的尾部。
6.根据权利要求4或5所述的方法,其特征在于,所述队列管理系统将所述第一回调消息转移到所述分布式消息队列的尾部之后,所述方法还包括:
所述队列管理系统重新从所述分布式消息队列中读取到所述第一回调消息,并保留所述第一回调消息在所述分布式消息队列中;
所述队列管理系统重新向使用方后台服务器发送所述回调请求;
所述队列管理系统重新判断在预置的时间段内是否接收到所述使用方后台服务器发送的回调响应;
若所述队列管理系统在所述时间段结束时还没有获取到所述使用方后台服务器发送的第一消息标识,所述队列管理系统将所述第一回调消息再次转移到所述分布式消息队列的尾部。
7.根据权利要求6所述的方法,其特征在于,所述队列管理系统重新判断在预置的时间段内是否接收到所述使用方后台服务器发送的回调响应之后,所述方法还包括:
若所述队列管理系统在所述时间段结束时还没有获取到所述使用方后台服务器发送的第一消息标识,所述队列管理系统判断重新发送所述回调请求的发送次数是否超过阈值,若所述发送次数超过阈值,所述队列管理系统将所述第一回调消息从所述分布式消息队列中删除掉,并将所述第一回调消息存储到所述队列管理系统的存储器中。
8.根据权利要求1所述的方法,其特征在于,所述队列管理系统判断在预置的时间段内是否接收到所述使用方后台服务器发送的回调响应,包括:
所述队列管理系统监测所述队列管理系统和所述使用方后台服务器之间建立的WebSocket连接,判断在所述时间段内是否接收到通过所述WebSocket连接传送的回调响应。
9.根据权利要求1所述的方法,其特征在于,所述队列管理系统从分布式消息队列中读取到第一回调消息,并保留所述第一回调消息在所述分布式消息队列中之后,所述方法包括:
所述队列管理系统将保留在所述分布式消息队列中的第一回调消息标记为未响应状态;
所述队列管理系统从所述分布式消息队列中读取没有被标记为未响应状态的第二回调消息,并向所述使用方后台服务器发送读取到的第二回调消息。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述队列管理系统从提供方后台服务器获取到回调消息,并将获取到的回调消息写入到分布式消息队列中。
11.根据权利要求10所述的方法,其特征在于,所述队列管理系统从提供方后台服务器获取到回调消息,并将获取到的回调消息写入到分布式消息队列中之后,所述方法还包括:
所述队列管理系统判断回调消息写入所述分布式消息队列的写入频率是否超过预置的回调频率;
若所述写入频率超过所述回调频率,所述队列管理系统暂缓从所述分布式消息队列中读取回调消息。
12.一种队列管理系统,其特征在于,包括:
回调消息读取模块,用于从分布式消息队列中读取到第一回调消息,并保留所述第一回调消息在所述分布式消息队列中,所述分布式消息队列中包括:从提供方后台服务器获取到的至少一个回调消息,每个所述回调消息对应有一个消息标识;
回调请求发送模块,用于向使用方后台服务器发送回调请求,所述回调请求包括:所述第一回调消息和所述第一回调消息对应的第一消息标识;
判断模块,用于判断在预置的时间段内是否接收到所述使用方后台服务器发送的回调响应;
回调响应解析模块,用于当所述队列管理系统在所述时间段内接收到所述回调响应时,获取所述回调响应中携带的消息标识;
回调消息管理模块,用于若所述回调响应中携带的消息标识是所述第一消息标识,将所述第一消息标识对应的所述第一回调消息从所述分布式消息队列中删除掉。
13.根据权利要求12所述的系统,其特征在于,所述回调消息管理模块,还用于所述回调响应解析模块获取所述回调响应中携带的消息标识之后,若所述回调响应中携带的消息标识不是所述第一消息标识,判断所述回调响应中携带的消息标识对应的回调消息是否已经发送给所述使用方后台服务器;若所述回调响应中携带的消息标识对应的回调消息已经发送给所述使用方后台服务器,将所述回调响应中携带的消息标识对应的回调消息从所述分布式消息队列中删除掉;若所述回调响应中携带的消息标识对应的回调消息还未发送给所述使用方后台服务器,或所述回调响应中携带的消息标识对应的回调消息不存在于所述分布式消息队列中,则对所述回调响应中携带的消息标识不做处理。
14.根据权利要求12所述的系统,其特征在于,所述回调消息读取模块,具体用于按照先入先出原则从所述分布式消息队列的头部读取到第一回调消息。
15.根据权利要求14所述的系统,其特征在于,所述回调消息管理模块,还用于所述判断模块判断在预置的时间段内是否接收到所述使用方后台服务器发送的回调响应之后,当所述队列管理系统在所述时间段内没有接收到所述回调响应时,将所述第一回调消息转移到所述分布式消息队列的尾部。
16.根据权利要求14所述的系统,其特征在于,所述回调消息管理模块,还用于所述回调消息解析模块获取所述回调响应中携带的消息标识之后,若所述队列管理系统在所述时间段结束时还没有获取到所述使用方后台服务器发送的第一消息标识,将所述第一回调消息转移到所述分布式消息队列的尾部。
17.根据权利要求15或16所述的系统,其特征在于,
所述回调消息读取模块,还用于所述回调消息管理模块将所述第一回调消息转移到所述分布式消息队列的尾部之后,重新从所述分布式消息队列中读取到所述第一回调消息,并保留所述第一回调消息在所述分布式消息队列中;
所述回调请求发送模块,还用于重新向使用方后台服务器发送所述回调请求;
所述判断模块,还用于重新判断在预置的时间段内是否接收到所述使用方后台服务器发送的回调响应;
所述回调消息管理模块,还用于若所述队列管理系统在所述时间段结束时还没有获取到所述使用方后台服务器发送的第一消息标识,将所述第一回调消息再次转移到所述分布式消息队列的尾部。
18.根据权利要求17所述的系统,其特征在于,所述队列管理系统,还包括:回调请求控制模块,其中,
所述回调请求控制模块,还用于所述判断模块重新判断在预置的时间段内是否接收到所述使用方后台服务器发送的回调响应之后,若所述队列管理系统在所述时间段结束时还没有获取到所述使用方后台服务器发送的第一消息标识,判断重新发送所述回调请求的发送次数是否超过阈值;
所述回调消息管理模块,还用于若所述发送次数超过阈值,将所述第一回调消息从所述分布式消息队列中删除掉,并将所述第一回调消息存储到所述队列管理系统的存储器中。
19.根据权利要求12所述的系统,其特征在于,所述判断模块,具体用于监测所述队列管理系统和所述使用方后台服务器之间建立的WebSocket连接,判断在所述时间段内是否接收到通过所述WebSocket连接传送的回调响应。
20.根据权利要求12所述的系统,其特征在于,所述队列管理系统,还包括:消息状态管理模块,用于所述回调消息读取模块从分布式消息队列中读取到第一回调消息,并保留所述第一回调消息在所述分布式消息队列中之后,将保留在所述分布式消息队列中的第一回调消息标记为未响应状态;
所述回调消息读取模块,还用于从所述分布式消息队列中读取没有被标记为未响应状态的第二回调消息,并向所述使用方后台服务器发送读取到的第二回调消息。
21.根据权利要求12所述的系统,其特征在于,所述队列管理系统,还包括:回调消息生成模块,用于从提供方后台服务器获取到回调消息,并将获取到的回调消息写入到分布式消息队列中。
22.根据权利要求21所述的系统,其特征在于,所述队列管理系统还包括:回调消息控制模块,用于所述回调消息读取模块从提供方后台服务器获取到回调消息,并将获取到的回调消息写入到分布式消息队列中之后,判断回调消息写入所述分布式消息队列的写入频率是否超过预置的回调频率;若所述写入频率超过所述回调频率,暂缓从所述分布式消息队列中读取回调消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610388549.1A CN106130868B (zh) | 2016-06-02 | 2016-06-02 | 回调消息的处理方法、队列管理系统、存储介质及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610388549.1A CN106130868B (zh) | 2016-06-02 | 2016-06-02 | 回调消息的处理方法、队列管理系统、存储介质及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106130868A true CN106130868A (zh) | 2016-11-16 |
CN106130868B CN106130868B (zh) | 2020-09-08 |
Family
ID=57270712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610388549.1A Active CN106130868B (zh) | 2016-06-02 | 2016-06-02 | 回调消息的处理方法、队列管理系统、存储介质及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106130868B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106603428A (zh) * | 2017-01-16 | 2017-04-26 | 浪潮(苏州)金融技术服务有限公司 | 一种消息队列保护方法及装置 |
CN106897160A (zh) * | 2017-01-23 | 2017-06-27 | 北京思特奇信息技术股份有限公司 | 一种文件处理方法、装置及系统 |
CN106919713A (zh) * | 2017-03-13 | 2017-07-04 | 郑州云海信息技术有限公司 | 一种集群文件系统及分布式文件系统多客户端文件控制方法 |
CN107040455A (zh) * | 2017-05-27 | 2017-08-11 | 北京思特奇信息技术股份有限公司 | 一种基于redis的即时消息通讯方法和系统 |
CN108280150A (zh) * | 2018-01-05 | 2018-07-13 | 宝付网络科技(上海)有限公司 | 一种分布式异步业务分发方法及系统 |
CN109961273A (zh) * | 2019-03-20 | 2019-07-02 | 广州精选速购网络科技有限公司 | 支付回调处理方法、系统及存储介质 |
CN110247808A (zh) * | 2019-06-27 | 2019-09-17 | 深圳前海微众银行股份有限公司 | 信息发送方法、装置、设备及可读存储介质 |
CN110413425A (zh) * | 2019-07-24 | 2019-11-05 | 深圳乐信软件技术有限公司 | 第三方消息回调方法、装置、服务器和存储介质 |
CN110928944A (zh) * | 2018-08-30 | 2020-03-27 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及其装置 |
CN111198773A (zh) * | 2019-12-31 | 2020-05-26 | 上海汇付数据服务有限公司 | 基于消息的应用通信方法及设备 |
CN111314203A (zh) * | 2019-11-20 | 2020-06-19 | 北京字节跳动网络技术有限公司 | 一种通信方法、装置、介质和电子设备 |
CN111666145A (zh) * | 2020-06-24 | 2020-09-15 | 深圳壹账通智能科技有限公司 | 消息队列的消息处理方法、系统和计算机设备 |
CN112291307A (zh) * | 2020-10-12 | 2021-01-29 | 北京思明启创科技有限公司 | 数据请求的处理方法、装置及电子设备 |
CN115276968A (zh) * | 2022-07-08 | 2022-11-01 | 中国第一汽车股份有限公司 | 一种第三方平台http回调分发方法、系统、电子设备和存储介质 |
CN116737395A (zh) * | 2023-08-14 | 2023-09-12 | 北京海科融通支付服务有限公司 | 一种异步信息处理系统及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101459627A (zh) * | 2008-04-07 | 2009-06-17 | 中兴通讯股份有限公司 | 消息管理方法 |
US20110060939A1 (en) * | 2003-10-02 | 2011-03-10 | Progress Software Corporation | High availability via data services |
CN103209115A (zh) * | 2013-04-07 | 2013-07-17 | 北京京东世纪贸易有限公司 | 一种消息发送系统 |
CN103647747A (zh) * | 2013-11-08 | 2014-03-19 | 陈明 | 一种多智能终端设备与服务器数据通信系统 |
CN105471703A (zh) * | 2014-08-27 | 2016-04-06 | 北京奇虎科技有限公司 | 一种消息发送方法及装置 |
-
2016
- 2016-06-02 CN CN201610388549.1A patent/CN106130868B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110060939A1 (en) * | 2003-10-02 | 2011-03-10 | Progress Software Corporation | High availability via data services |
CN101459627A (zh) * | 2008-04-07 | 2009-06-17 | 中兴通讯股份有限公司 | 消息管理方法 |
CN103209115A (zh) * | 2013-04-07 | 2013-07-17 | 北京京东世纪贸易有限公司 | 一种消息发送系统 |
CN103647747A (zh) * | 2013-11-08 | 2014-03-19 | 陈明 | 一种多智能终端设备与服务器数据通信系统 |
CN105471703A (zh) * | 2014-08-27 | 2016-04-06 | 北京奇虎科技有限公司 | 一种消息发送方法及装置 |
Non-Patent Citations (2)
Title |
---|
(美)HASSAN GOMAA: "《用UML设计并发、分布式、实时应用》", 31 May 2004 * |
施威铭研究室: "《Active Server Pages 3.0技术实务》", 31 May 2001 * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106603428A (zh) * | 2017-01-16 | 2017-04-26 | 浪潮(苏州)金融技术服务有限公司 | 一种消息队列保护方法及装置 |
CN106897160A (zh) * | 2017-01-23 | 2017-06-27 | 北京思特奇信息技术股份有限公司 | 一种文件处理方法、装置及系统 |
CN106919713A (zh) * | 2017-03-13 | 2017-07-04 | 郑州云海信息技术有限公司 | 一种集群文件系统及分布式文件系统多客户端文件控制方法 |
CN106919713B (zh) * | 2017-03-13 | 2021-03-16 | 苏州浪潮智能科技有限公司 | 一种集群文件系统及分布式文件系统多客户端文件控制方法 |
CN107040455A (zh) * | 2017-05-27 | 2017-08-11 | 北京思特奇信息技术股份有限公司 | 一种基于redis的即时消息通讯方法和系统 |
CN107040455B (zh) * | 2017-05-27 | 2021-05-11 | 北京思特奇信息技术股份有限公司 | 一种基于redis的即时消息通讯方法和系统 |
CN108280150A (zh) * | 2018-01-05 | 2018-07-13 | 宝付网络科技(上海)有限公司 | 一种分布式异步业务分发方法及系统 |
CN108280150B (zh) * | 2018-01-05 | 2023-03-28 | 宝付网络科技(上海)有限公司 | 一种分布式异步业务分发方法及系统 |
CN110928944B (zh) * | 2018-08-30 | 2024-04-02 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及其装置 |
CN110928944A (zh) * | 2018-08-30 | 2020-03-27 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及其装置 |
CN109961273A (zh) * | 2019-03-20 | 2019-07-02 | 广州精选速购网络科技有限公司 | 支付回调处理方法、系统及存储介质 |
CN110247808A (zh) * | 2019-06-27 | 2019-09-17 | 深圳前海微众银行股份有限公司 | 信息发送方法、装置、设备及可读存储介质 |
CN110247808B (zh) * | 2019-06-27 | 2024-04-09 | 深圳前海微众银行股份有限公司 | 信息发送方法、装置、设备及可读存储介质 |
CN110413425A (zh) * | 2019-07-24 | 2019-11-05 | 深圳乐信软件技术有限公司 | 第三方消息回调方法、装置、服务器和存储介质 |
CN111314203A (zh) * | 2019-11-20 | 2020-06-19 | 北京字节跳动网络技术有限公司 | 一种通信方法、装置、介质和电子设备 |
CN111198773B (zh) * | 2019-12-31 | 2024-03-29 | 上海汇付支付有限公司 | 基于消息的应用通信方法及设备 |
CN111198773A (zh) * | 2019-12-31 | 2020-05-26 | 上海汇付数据服务有限公司 | 基于消息的应用通信方法及设备 |
CN111666145A (zh) * | 2020-06-24 | 2020-09-15 | 深圳壹账通智能科技有限公司 | 消息队列的消息处理方法、系统和计算机设备 |
CN112291307A (zh) * | 2020-10-12 | 2021-01-29 | 北京思明启创科技有限公司 | 数据请求的处理方法、装置及电子设备 |
CN115276968A (zh) * | 2022-07-08 | 2022-11-01 | 中国第一汽车股份有限公司 | 一种第三方平台http回调分发方法、系统、电子设备和存储介质 |
CN116737395A (zh) * | 2023-08-14 | 2023-09-12 | 北京海科融通支付服务有限公司 | 一种异步信息处理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106130868B (zh) | 2020-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106130868A (zh) | 一种回调消息的处理方法和队列管理系统 | |
CN103379021B (zh) | 实现分布式消息队列的方法及系统 | |
CN110752943B (zh) | 一种输电线路分布式故障诊断系统及方法 | |
CN104092717B (zh) | 消息处理方法及系统、消息目的端设备 | |
CN111555957B (zh) | 一种基于Kafka的同步消息服务系统及实现方法 | |
CN105337923B (zh) | 数据分发方法和系统及数据发送装置和数据接收装置 | |
CN108134830A (zh) | 基于消息队列的负载均衡方法、系统、装置及存储介质 | |
CN105119810A (zh) | 一种基于xmpp协议的即时通讯方法及系统 | |
CN101510893A (zh) | 消息文件的发送、中转、接收方法、装置及传输系统 | |
CN107979498B (zh) | 一种mesh网络集群及基于所述集群的大文件传输方法 | |
CN112783672B (zh) | 一种远程过程调用处理方法及系统 | |
CN105978721A (zh) | 一种集群系统中监控服务运行状态的方法、装置和系统 | |
CN105282803A (zh) | 通讯接口和基于通讯接口的信息传递方法及系统 | |
EP3660679B1 (en) | Data backup method, device and system | |
CN103491162A (zh) | 基于移动互联网的信息分享方法及系统 | |
CN109039881A (zh) | 一种智能配电监控管理系统及信息推送方法 | |
CN108259595A (zh) | 一种服务间异步调用的方法及系统 | |
CN114615358A (zh) | 智能电子设备的仿真方法、电子设备和存储介质 | |
CN106331202A (zh) | 动态主机配置协议dhcp服务器管理方法及装置 | |
CN102655480B (zh) | 相似邮件处理系统和方法 | |
CN111726392B (zh) | 基于卫星移动轨迹的内容推送方法、系统及设备 | |
CN113453179B (zh) | 一种基于5g会话到话单消息的智能转换方法 | |
CN108243397B (zh) | 一种短信发送方法和短信网关设备 | |
CN113098978B (zh) | 一种数据传输方法、装置及介质 | |
EP2847967B1 (en) | Method and system for prefetching data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |