一种消息持久化方法及系统的制作方法

文档序号:7862511阅读:87来源:国知局
专利名称:一种消息持久化方法及系统的制作方法
技术领域
本发明涉及计算机领域,特别是一种消息持久化方法及系统。
背景技术
目前,消息中间件服务器的消息可靠传输是衡量消息中间件产品的一个非常重要指标,如何存储客户端发送到消息服务器的消息是其中的重要一个环节,因为涉及到如何存储消息、发送者、发送者的目的地等相关消息,以及如何快速从存储器把持久的消息置换到内存空间以备客户端来消费该信息。目前实现消息存储最常用的方法将所有客户端发送给服务器端的消息保存在内存之中,由于所有消息均在内存中操作,采用这个方式的消息中间件吞吐性能非常 高,其中该种方法存在以下问题如果服务器宕机,所有保存在内存中的消息将会丢失,因此会造成消息传输稳定性不高的问题。

发明内容
本发明所要解决的问题是提供一种消息持久化方法及系统,以解决现有技术中当发生服务器宕机时,内存中的消息会丢失造成消息传输的稳定性不高的问题。本发明提供一种消息持久化方法,包括接收客户端发送的消息集;对所述消息集中的各个消息依次进行解析,获得各个消息中包含的位置标识;对所述消息集中的各个消息进行序列化,将所述各个经过序列化的消息依据其所包含的位置标识写入日志文件。优选地,还包括获取写入日志文件的写入结果,并判断所述写入结果是否写入成功,如果是,生成响应数据,并将所述响应数据发送至客户端。优选地,还包括将所述消息集中各个消息的位置标识存储到服务器内存中。优选地,还包括当服务器内存接收到读取消息指令时,依据所述消息的位置标识,获得存储在所述日志文件中的消息。优选地,所述将所述各个经过序列化消息依据其所包含的位置标识写入日志文件的过程包括将所述序列化消息以字节流的形式依据其所包含的位置标识写入日志文件。—种消息持久化系统,所述系统包括接收模块、处理模块和第一存储模块;所述接收模块用于,接收客户端发送的消息集;所述处理模块用于,对所述消息集中各个消息依次进行解析,获得各个消息中包含的位置标识;所述第一存储模块用于,对所述消息集中的各个消息进行序列化,将所述各个经过序列化的消息依据其所包含的位置标识写入日志文件。优选地,还包括判断模块和响应模块;
所述判断模块用于,判断所述写入日志文件得到的写入结果是否写入成功,如果是,则生成响应数据,如果否,则生成失败响应数据;所述响应模块用于,将所述响应数据或失败响应数据发送至客户端。 优选地,还包括第二存储模块所述第二存储模块用于,将所述消息集中各个消息位置标识存储到服务器内存中。优选地,还包括读取模块;所述读取模块用于,当服务器内存接收到读取消息指令时,依据所述消息的位置标识,获得存储在所述日志文件中的消息。 从以上技术方案可以看出,本发明提供了一种消息持久化方法及系统,所述方法包括接收客户端发送的消息集,对所述消息集中的各个消息依次进行解析,获得各个消息中包含的位置标识,对所述消息集中的各个消息进行序列化,将所述各个经过序列化消息依据其所包含的位置标识写入日志文件,所述方法应用于系统中,可以实现在服务器宕机的情况下,保存在日志文件中的消息不会丢失还可以恢复到宕机之前的运行状态,因此不会造成消息传输稳定性不高的问题。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本发明实施例一公开的一种消息持久化方法的流程示意图;图2为本发明实施例二公开的一种消息持久化方法的流程示意图;图3为本发明实施例三公开的一种消息持久化方法的流程示意图;图4为本发明实施例四公开的一种消息持久化系统的结构示意图;图5为本发明实施例五公开的一种消息持久化系统的结构示意图;图6为本发明实施例六公开的一种消息持久化系统的结构示意图。
具体实施例方式下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。本发明实施例一公开了一种消息持久化方法流程示意图,参见图I所示,所述方法应用于消息中间件中,步骤包括步骤SlOl :接收客户端发送的消息集;步骤S102 :对所述消息集中的各个消息依次进行解析,获得各个消息中包含的位置标识;其中,对各个消息进行解析,可以得到各个消息的消息内容、目的地位置、发送者名称和消息标识等。步骤S103 :对所述消息集中的各个消息进行序列化,将所述各个经过序列化的消息依据其所包含的位置标识写入日志文件;其中,所述序列化消息以字节流的形式依据不同目的地位置写入日志文件中。本实施例公开了一种消息持久化方法,所述方法包括接收客户端发送的消息集,将所述消息集中的各个消息依次进行解析,获得各个消息中包含的位置标识,将所述消息集中的各个消息进行序列化,将所述各个经过序列化的消息依据其所包含的位置标识写入日志文件,所述方法将所述信息序列化后写入日志文件中,这样可以保证即使宕机恢复后,所述信息还会保留,从而提高了消息传输的稳定性。本实施例二公开了一种消息持久化的方法,参见图2所示,所述方法包括步骤S201 :接收客户端发送的消息集;步骤S202 :对所述消息集中的各个消息依次进行解析,获得各个消息中包含的位置标识;步骤S203 :对所述消息集中的各个消息进行序列化,将所述各个经过序列化的消息依据其所包含的位置标识写入日志文件;其中,所述序列化消息以字节流的形式依据不同目的地位置写入日志文件中。步骤S204 :判断所述写入结果是否写入成功,如果是,执行步骤S205,如果否,则执行步骤S206 ;步骤S205 :生成响应数据,并将所述响应数据发送至客户端;步骤S206 :生成失败响应数据,并将所述失败响应数据发送至客户端。本实施例在实施例一的基础上,增加了对是否将消息写入日志文件的判断过程,当写入成功,生成响应数据,并将所述响应数据发送至客户端,如果没有成功,发送失败信息到客户端,可以有效地确认各个经过序列化的信息是否已经写入日志文件中,避免了出现无效的操作。本实施例三公开了一种消息持久化的方法,参见图3所示,所述方法包括步骤S301 :接收客户端发送的消息集;步骤S302 :对所述消息集中的各个消息依次进行解析,获得各个消息中包含的位置标识;步骤S303 :对所述消息集中的各个消息进行序列化,将所述各个经过序列化的消息依据其所包含的位置标识写入日志文件;步骤S304 :将所述消息集中各个消息的位置标识存储在服务器内存中;步骤S305 :当服务器内存接收到读取消息指令时,依据所述消息的位置标识,获得存储在所述日志文件中的消息。本实施例公开了一种消息持久化的方法,所述方法在实施例一的基础上,将所述消息集中各个消息的位置标识存储到服务器内存中,当服务器内存接收到读取信息指令时,依据所述消息的位置标识,获得存储在所述日志文件中的消息,在不宕机的情况下,所述方法通过消息索引标识实现了消息中间件的消息的高吞吐量,提高了消息检索的效率。本实施例四公开了一种消息持久化的系统,参见图4所示,所述系统包括接收模块101、处理模块102、第一存储模块103 ;
所述接收模块101用于,接收客户端发送的消息集;所述处理模块102用于,对所述消息集中各个消息依次进行解析,获得各个消息中包含的位置标识;所述第一存储模块103用于,对所述消息集中的各个消息进行序列化,将所述各个经过序列化的消息依据其所包含的位置标识写入日志文件。本实施例公开了一种消息持久化的系统,所述系统包括接收模块、处理模块、存储模块,所述接收模块接收客户端发送的消息集,所述处理模块将所述消息集中各个消息依次进行解析,获得各个消息中包含的位置标识,,所述第一存储模块对所述消息集中各个消息进行序列化,将所述各个经过序列化的消息依据其所包含的位置标识写入日志文件,所述系统将所述序列化消息存储在日志文件中,保证了即使在发生宕机的情况下,消息都不会丢失的情况,提高了消息传输的稳定性。本实施例五公开了一种消息持久化的系统,参见图5所不,在实施例四的基础上, 所述系统还包括判断模块104和响应模块105 ;所述判断模块104用于,判断所述写入结果是否表明写入成功,如果是,则生成响应数据,如果否,则生成失败响应数据;所述响应模块105用于,将所述响应数据或失败响应数据发送至客户端。本实施例公开了一种消息持久化的系统,所述系统还包括判断模块、响应模块,所述判断模块判断所述写入结果是否表明写入成功,如果是,则生成响应数据,如果否,则生成失败响应数据,所述响应模块将所述响应数据或失败响应数据发送至客户端,所述系统可以有效地确认各个经过序列化的消息是否已经写入日志文件中,避免了出现无效的操作。本发明实施例六公开了一种消息持久化的系统,在实施例四的基础上,所述系统还包括第二存储模块106和读取模块107 ;所述第二存储模块106用于,将所述消息集中各个消息位置标识存储到服务器内存中;所述读取模块107用于,当服务器内存接收到读取消息指令时,依据所述消息的位置标识,获得存储在所述日志文件中的消息。本实施例公开了一种消息持久化的系统,所述系统在实施例四的基础上增加了第二存储模块和读取模块,所述第二存储模块用于将所述各个消息位置标识存储在服务器内存中,所述读取模块用于当服务器内存接收到读取消息指令时,依据所述消息的位置标识,获得存储在所述日志文件中的消息,在高负载的情况下,可以依靠所述系统中的第二存储模块中的各个消息位置标识,提高消息中间件的消息吞吐量,来实现高效的消息检索。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符 合与本文所公开的原理和新颖特点相一致的最宽范围。
权利要求
1.ー种消息持久化方法,其特征在于,所述方法包括 接收客户端发送的消息集; 对所述消息集中的各个消息依次进行解析,获得各个消息中包含的位置标识; 对所述消息集中的各个消息进行序列化,将所述各个经过序列化的消息依据其所包含的位置标识写入日志文件。
2.根据权利要求I所述的方法,其特征在于,还包括 获取写入日志文件的写入結果,并判断所述写入结果是否写入成功,如果是,生成响应数据,并将所述响应数据发送至客户端。
3.根据权利要求I所述的方法,其特征在于,还包括 将所述消息集中各个消息的位置标识存储到服务器内存中。
4.根据权利要求3所述的方法,其特征在于,还包括 当服务器内存接收到读取消息指令时,依据所述消息的位置标识,获得存储在所述日志文件中的消息。
5.根据权利要求I所述的方法,其特征在于,所述将所述各个经过序列化消息依据其所包含的位置标识写入日志文件的过程包括 将所述序列化消息以字节流的形式依据其所包含的位置标识写入日志文件。
6.ー种消息持久化系统,其特征在于,所述系统包括接收模块、处理模块和第一存储模块; 所述接收模块用于,接收客户端发送的消息集; 所述处理模块用干,对所述消息集中各个消息依次进行解析,获得各个消息中包含的位置标识; 所述第一存储模块用干,对所述消息集中的各个消息进行序列化,将所述各个经过序列化的消息依据其所包含的位置标识写入日志文件。
7.根据权利要求6所述的方法,其特征在与,还包括判断模块和响应模块; 所述判断模块用于,判断所述写入日志文件得到的写入结果是否写入成功,如果是,则生成响应数据,如果否,则生成失败响应数据; 所述响应模块用于,将所述响应数据或失败响应数据发送至客户端。
8.根据权利要求6所述的系统,其特征在于,还包括第二存储模块 所述第二存储模块用于,将所述消息集中各个消息位置标识存储到服务器内存中。
9.根据权利要求8所述的系统,其特征在于,还包括读取模块; 所述读取模块用于,当服务器内存接收到读取消息指令时,依据所述消息的位置标识,获得存储在所述日志文件中的消息。
全文摘要
本发明公开了一种消息持久化的方法及系统,所述方法中将接收到客户端发送的消息集中的各个消息依次进行解析,获得各个消息中包含的位置标识,将所述消息集中的各个消息进行序列化,将所述各个经过序列化的消息依据其所包含的位置标识写入日志文件,所述方法应用于系统中,可以实现在服务器宕机的情况下,保存在日志文件中的消息不会丢失还可以恢复到宕机之前的运行状态,因此不会造成消息传输稳定性不高的问题。
文档编号H04L29/06GK102868564SQ20121038092
公开日2013年1月9日 申请日期2012年10月10日 优先权日2012年10月10日
发明者聂秀志, 张辉, 刘民, 温尚卓 申请人:山东中创软件商用中间件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1