【技术实现步骤摘要】
一种基于消息队列实现消息接收与转发的方法及系统
本专利技术涉及数据通讯领域,具体涉及一种基于消息队列实现消息接收与转发的方法及系统。
技术介绍
在政府或企业应用系统建设及系统整合过程中,通常采用消息中间件把分布在网络各处自治、异构的信息系统有效地集成为一体化的系统。现有消息中间件通常采用以数据交换服务器为数据交换中心的工作机制,消息发送端将消息发送给数据交换服务器,数据交换服务器再将消息转发给消息接收端,其优点在于客户端只需和服务器进行交互,消息发送端和消息接收端不必同时在线,消息发送端和消息接收端不必直接建立连接即可进行消息的传输。现有技术中,数据交换服务器在收到消息时,待转发给消息接收端的消息驻留在内存中,或者将消息保存在数据库或文件系统中。将消息存放在内存中的弊端是内存资源总是有限的,数据交换服务器在大量接收、转发消息的情况,消息队列将被占满,后续的消息无法存放进消息队列而被丢弃,造成传输数据的丢失,而且如果出现掉电、系统异常崩溃等突发情况,即使写入消息队列的消息也会丢失。如果将消息保存在数据库或文件系统的外部存储系统中,消息转发需要从外部存储设备中读取,由 ...
【技术保护点】
一种基于消息队列实现消息接收与转发的方法,包括以下步骤:(1)消息发送端将消息发送到数据交换服务器;(2)数据交换服务器接收到消息发送端的消息后,根据消息的路由配置信息,确定所述消息的消息接收端;所述消息接收端为一个或者多个;(3)数据交换服务器将接收到的待转发消息分别保存到每个消息接收端所对应的外存消息队列中;所述外存消息队列保存在外部非易失性存储设备上;(4)数据交换服务器将所述待转发消息存放到消息接收端所对应的内存消息队列中;(5)提取内存消息队列中的待转发消息,并将所述待转发消息转发给内存消息队列所对应的消息接收端。
【技术特征摘要】
1.一种基于消息队列实现消息接收与转发的方法,包括以下步骤:(1)消息发送端将消息发送到数据交换服务器;(2)数据交换服务器接收到消息发送端的消息后,根据消息的路由配置信息,确定所述消息的消息接收端;所述消息接收端为一个或者多个;(3)数据交换服务器将接收到的待转发消息分别保存到每个消息接收端所对应的外存消息队列中;所述外存消息队列保存在外部非易失性存储设备上;(4)数据交换服务器将所述待转发消息存放到消息接收端所对应的内存消息队列中;(5)提取内存消息队列中的待转发消息,并将所述待转发消息转发给内存消息队列所对应的消息接收端;将所述待转发消息转发给内存消息队列所对应的消息接收端的具体方式为:1)将内存消息队列中的所有消息提取到消息列表中,并从内存消息队列中删除已经提取过的消息;2)查看所述消息列表是否为空,若否则进入步骤3),若是则查看该内存消息队列的消息接收端所对应的外存消息队列是否为空,若是则处理结束,若否则读取外存消息队列中的待转发消息并将所述待转发消息保存到该消息接收端所对应的内存消息队列中并返回步骤1);3)获取消息列表中的消息,数据交换服务器将所获取的消息逐条转发给内存消息队列所对应的消息接收端。2.如权利要求1所述的一种基于消息队列实现消息接收与转发的方法,其特征在于:数据交换服务器首次向某个消息接收端转发消息时为其创建内存消息队列,每个消息接收端对应唯一的内存消息队列。3.如权利要求1或2所述的一种基于消息队列实现消息接收与转发的方法,其特征在于:步骤(3)与步骤(4)之间还包括以下步骤:(3-4)数据交换服务器判断消息接收端是否存在对应的内存消息队列,若是则进入步骤(4),若否则数据交换服务器为消息接收端创建内存消息队列后进入步骤(4)。4.如权利要求3所述的一种基于消息队列实现消息接收与转发的方法,其特征在于:在创建内存消息队列时,设置内存消息队列的消息队列容量,所述消息队列容量由消息个数和消息数据量决定。5.如权利要求4所述的一种基于消息队列实现消息接收与转发的方法,其特征在于:步骤(4)中,数据交换服务器将待转发消息保存到消息接收端所对应的内存消息队列前,首先判断该消息接收端的内存消息队列是否为忙,若否则直接执行步骤(4),若是则查看是否存在下一消息接收端,若是则获取下一消息接收端进入步骤(3),若否则处理结束。6.如权利要求5所述的一种基于消息队列实现消息接收与转发的方法,其特征在于:当内存消息队列满足以下条件之一时,确定内存消息队列为忙:a、内存消息队列中实际存放的消息个数达到消息队列容量指定的消息个数,即确定内存消息队列为忙;b、当消息队列占比系数达到设定阈值时,则确定内存消息队列为忙;所述消息队列占比系数是指内存消息队列中实际存放的所有消息的消息数据量总和与消息队列容量指定的数据量的比值。7.如权利要求1所述的一种基于消息队列实现消息接收与转发的方法,其特征在于:步骤(5)中,数据交换服务器将消息列表中的消息逐条转发给消息接收端后,删除外存消息队列中所对应的已经转发成功的消息。8.如权利要求1所述的一种基于消息队列实现消息接收与转发的方法,其特征在于:步骤(5)中,为消息接收端所对应的内存消息队列创建消息转发线程,通过启动消息转发线程将所获取的消息转发给消息接收端。9.如权利要求8所述的一种基于消息队列实现消息接收与转发的方法,其特征在于:步骤(5)中,只启动存在待转发消...
【专利技术属性】
技术研发人员:乐以长,芦华楠,黄婷,高超霖,
申请(专利权)人:北京大学,北大方正集团有限公司,方正国际软件北京有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。