拉取消息的方法、装置及系统制造方法及图纸

技术编号:17660379 阅读:28 留言:0更新日期:2018-04-08 11:54
本发明专利技术提供了一种拉取消息的方法、装置及系统,通过第一线程发送用于拉取消息的拉取请求给对应的消息服务器,通过第二线程接收该消息服务器返回的应答消息。本实施例中,将启动的两个线程进行专属化,其中第一线程专门用来发送拉取请求,第二线程专门用于接收应答消息,从而Consumer能够利用第一线程持续地向Broker发送拉取请求,通过第二线程持续接收从Broker返回的应答消息,即Consumer能够连续地从Broker拉取消息,实现了兼顾消息的拉取效率和资源利用率的目的。

【技术实现步骤摘要】
拉取消息的方法、装置及系统
本专利技术属于计算机领域,尤其涉及一种拉取消息的方法、装置及系统。
技术介绍
消息中间件是用来发布/订阅消息的消息系统,该消息中间件通常提供两种消费消息的方式:推送(Push)和拉取(Pull)。消息中间件包括消息产生器(Producer)、消息消费端(Consumer)和消息服务器(Broker),其中,Producer通过Push方式将消息发布/推送到Broker上,Consumer通过Pull方式从Broker中拉取消息。针对Pull方式,在大规范分布式系统下,Consumer需要向多个Broker轮询发起拉取请求。例如,在分布式系统下有100个Broker,一个Consumer要消息这100个Broker上的消息,此时,Consumer可以通过Pull方式从Broker拉取消息。目前,Consumer通过Pull方式从Broker上拉取消息有以下两种方法:(1)启动100个线程,每个线程对应于一个Broker,然后通过该线程发送pull(拉取)请求,然后Broker对该pull请求进行处理获取相应的应答消息,再利用线程接收返回给Consumer的应答消息,这样就完成Consumer从Broker上拉取消息的过程。(2)仅启动一个线程,当需要从100个Broker上拉取消息时,Consumer只能通过该线程逐次轮询这100个Broker,Consumer首先利用该线程发送拉取请求到一个Broker,Broker接收到拉取请求后对该拉取请求进行处理,获取相应的应答消息,然后向Consumer返回一个应答消息,Consumer利用该线程接收返回的应答消息。Consumer通过Pull方法拉取Broker上的消息的过程:每个Broker都要花费发送拉取请求的时间T1,处理拉取请求的时间T2以及返回应答消息的时间为T3,共花费的时间为T=T1+T2+T3。在该方案中由于Consumer只能够使用一个线程,因此需要接收返回的应答消息之后,才能进行下一个消息的拉取,因此这样拉取100个Broker上的消息需要花费100倍的T。第一种方式虽然实时性较好,但是需要使用100个线程,占用资源较多。第二种方式虽然占用资源较少,但是需要耗费时间较长,导致拉取消息的实时性和效率较差,上述两种Pull消息的方式,均无法同时兼顾拉取效率和资源利用率。
技术实现思路
本专利技术提供一种拉取消息的方法、装置及系统,用于解决现有Consumer从Broker上拉取消息的两种方式无法同时兼顾拉取效率和资源利用率的问题。为了实现上述目的,本专利技术提供了一种拉取消息的系统,包括:消息消费端和消息服务器;所述消息消费端,用于启动并初始化第一线程和第二线程,其中所述第一线程用于向所述消息服务器发送用于拉取消息的拉取请求;所述第二线程用于接收所述消息服务器返回的应答消息;所述消息消费端,用于通过所述第一线程将所述拉取请求发送给对应的所述消息服务器,以及通过第二线程接收所述消息服务器发送的应答消息;所述消息服务器,用于接收所述消息消费端发送的所述拉取请求,获取与所述拉取请求对应的所述应答消息并发送给所述消息消费端。为了实现上述目的,本专利技术提供了一种拉取消息的方法,包括:通过第一线程发送用于拉取消息的拉取请求给对应的消息服务器;通过第二线程接收所述消息服务器返回的应答消息。为了实现上述目的,本专利技术提供了一种拉取消息的装置,包括:发送模块,用于通过第一线程发送用于拉取消息的拉取请求给对应的消息服务器;接收模块,用于通过第二线程接收所述消息服务器返回的应答消息。为了实现上述目的,本专利技术提供了一种拉取消息的系统,包括:消息消费端和至少一个消息服务器;所述消息消费端,用于启动并初始化第一线程和第二线程,其中所述第一线程用于向所述消息服务器发送用于拉取消息的拉取请求;所述第二线程用于接收所述消息服务器返回的应答消息;所述消息消费端,用于当拉取多个消息服务器上的消息时,将所有待发送的拉取请求进行排序,按照顺序通过所述第一线程将每个拉取请求发送给对应的消息服务器,以及通过所述第二线程逐次接收各消息服务器返回的应答消息;所述消息服务器,用于接收所述消息消费端发送的所述拉取消息,获取与所述拉取请求对应的所述应答消息,以及将所述应答消息发送给所述消息消费端。为了实现上述目的,本专利技术提供了一种拉取消息的方法,包括:当拉取多个消息服务器上的消息时,将所有待发送的拉取请求进行排序;按照顺序通过所述第一线程将每个拉取请求发送给对应的所述消息服务器;通过第二线程接收各消息服务器返回的所述应答消息。为了实现上述目的,本专利技术提供了一种拉取消息的装置,包括:排序模块,用于当拉取多个消息服务器上的消息时,将所有待发送的拉取请求进行排序;发送模块,用于按照顺序通过所述第一线程将每个拉取请求发送给对应的所述消息服务器;接收模块,用于通过第二线程接收各消息服务器返回的所述应答消息。为了实现上述目的,本专利技术提供了一种拉取消息的方法,包括:接收通过第一线程发送的用于拉取消息的拉取请求,所述第一线程由消息消费端设置为专门用于发送所述拉取请求;向第二线程返回与所述拉取请求对应的应答消息,所述第二线程由所述消息消费端设置为专门用于接收所述应答消息。为了实现上述目的,本专利技术提供了一种拉取消息的装置,包括:接收模块,用于接收通过第一线程发送的用于拉取消息的拉取请求,所述第一线程由消息消费端设置为专门用于发送所述拉取请求;返回模块,用于向第二线程返回与所述拉取请求对应的应答消息,所述第二线程由所述消息消费端设置为专门用于接收所述应答消息。本专利技术提供的拉取消息的方法、装置及系统,通过第一线程发送用于拉取消息的拉取请求给对应的消息服务器,通过第二线程接收该消息服务器返回的应答消息。本实施例中,将启动的两个线程进行专属化,其中第一线程专门用来发送拉取请求,第二线程专门用于接收应答消息,从而Consumer能够利用第一线程持续地向Broker发送拉取请求,通过第二线程持续接收从Broker返回的应答消息,即Consumer能够连续地从Broker拉取消息,实现了兼顾消息的拉取效率和资源利用率的目的。附图说明图1为本专利技术实施例一的拉取消息的方法的流程示意图;图2为本专利技术实施例二的拉取消息的方法的流程示意图;图3为本专利技术实施例三的拉取消息的方法的流程示意图;图4为本专利技术实施例三中的拉取消息的方法的应用示意图之一;图5为本专利技术实施例三中的拉取消息的方法的应用示意图之二;图6为本专利技术实施例三中的拉取消息的方法的应用示意图之三;图7为本专利技术实施例四的拉取消息的方法的流程示意图;图8为本专利技术实施例五的拉取消息的装置的结构示意图;图9为本专利技术实施例六的拉取消息的装置的结构示意图;图10为本专利技术实施例七的拉取消息的装置的结构示意图;图11为本专利技术实施例八的拉取消息的装置的结构示意图;图12为本专利技术实施例九的拉取消息的系统的结构示意图;图13为本专利技术实施例十的拉取消息的系统的结构示意图。具体实施方式下面结合附图对本专利技术实施例提供的拉取消息的方法、装置及系统进行详细描述。实施例一如图1所示,其为本专利技术实施例一的拉取消息的方法的流程示意图。该拉取消息的方法包括以下步骤:S101、通过第一线程发送用于拉取消本文档来自技高网
...
拉取消息的方法、装置及系统

【技术保护点】
一种拉取消息的系统,其特征在于,包括:消息消费端和消息服务器;所述消息消费端,用于启动并初始化第一线程和第二线程,其中所述第一线程用于向所述消息服务器发送用于拉取消息的拉取请求;所述第二线程用于接收所述消息服务器返回的应答消息;所述消息消费端,用于通过所述第一线程将所述拉取请求发送给对应的所述消息服务器,以及通过第二线程接收所述消息服务器发送的应答消息;所述消息服务器,用于接收所述消息消费端发送的所述拉取请求,获取与所述拉取请求对应的所述应答消息并发送给所述消息消费端。

【技术特征摘要】
1.一种拉取消息的系统,其特征在于,包括:消息消费端和消息服务器;所述消息消费端,用于启动并初始化第一线程和第二线程,其中所述第一线程用于向所述消息服务器发送用于拉取消息的拉取请求;所述第二线程用于接收所述消息服务器返回的应答消息;所述消息消费端,用于通过所述第一线程将所述拉取请求发送给对应的所述消息服务器,以及通过第二线程接收所述消息服务器发送的应答消息;所述消息服务器,用于接收所述消息消费端发送的所述拉取请求,获取与所述拉取请求对应的所述应答消息并发送给所述消息消费端。2.根据权利要求1所述的拉取消息的系统,其特征在于,所述消息消费端,具体用于分析所述拉取请求的目标类型,获取与所述目标类型对应的所述消息服务器,并将所述拉取请求通过所述第一线程发送到所述消息服务器。3.根据权利要求2所述的拉取消息的系统,其特征在于,所述消息消费端,具体用于查询预存的拉取请求类型与消息服务器标识之间的映射关系,以获取与所述目标类型对应的所述消息服务器的标识信息,根据所述标识信息将所述拉取请求通过所述第一线程发送给所述消息服务器。4.根据权利要求3所述的拉取消息的系统,其特征在于,所述消息消费端,还用于当拉取多个消息服务器上的消息时,将所有待发送的拉取请求进行排序,按照顺序通过所述第一线程逐次将所述拉取请求发送给对应的所述消息服务器。5.一种拉取消息的方法,其特征在于,包括:通过第一线程发送用于拉取消息的拉取请求给对应的消息服务器;通过第二线程接收所述消息服务器返回的应答消息。6.根据权利要求5所述的拉取消息的方法,其特征在于,所述通过第一线程发送用于拉取消息的拉取请求给对应的消息服务器,包括:分析所述拉取请求的目标类型;获取与所述目标类型对应的所述消息服务器;将所述拉取请求通过所述第一线程发送到所述消息服务器。7.根据权利要求6所述的拉取消息的方法,其特征在于,所述获取与所述目标类型对应的所述消息服务器,包括:查询预存的拉取请求类型与消息服务器标识之间的映射关系,以获取与所述目标类型对应的所述消息服务器的标识信息。8.根据权利要求7所述的方法,其特征在于,所述将所述拉取请求通过所述第一线程发送到所述消息服务器,包括:当拉取多个消息服务器上的消息时,将所有待发送的拉取请求进行排序;按照顺序通过所述第一线程将所述拉取请求发送给对应的所述消息服务器。9.根据权利要求8所述的拉取消息的方法,其特征在于,所述当拉取多个消息服务器上的消息时,将所有待发送的拉取请求进行排序,包括:当拉取多个消息服务器上的消息时,获取所有待发送的拉取请求的类型;按照预设的拉取请求类型的优先级,对所有待发送的拉取请求进行排序;将排序后的所有拉取请求生成一个请求队列。10.根据权利要求9所述的拉取消息的方法,其特征在于,所述按照顺序通过所述第一线程将所述拉取请求发送给对应的所述消息服务器,包括当前一个拉取请求通过所述第一线程发送完成后,从所述请求队列中取出下一个拉取请求;通过所述第一线程将所述下一个拉取请求发送给对应的所述消息服务器。11.根据权利要求6-10任一项所述的拉取消息的方法,其特征在于,所述应答消息中携带消息消费端的标识。12.根据权利要求11所述的拉取消息的方法,其特征在于,所述通过第一线程发送用于拉取消息的拉取请求给对应的消息服务器之前,包括:从闲置的线程中选取两个线程;将一个线程初始化成专门用于发送所述拉取请求的所述第一线程,以及将另一个初始化成专门用于接收所述应答消息的所述第二线程。13.根据权利要求7所述的拉取消息的方法,其特征在于,所述消息服务器标识为所述消息服务器的地址信息,包括IP地址和端口号。14.一种拉取消息的装置,其特征在于,包括:发送模块,用于通过第一线程发送用于...

【专利技术属性】
技术研发人员:王小瑞金晓军强琦
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1