[发明专利]一种用于集群的消息队列接收方法及系统在审
申请号: | 201410370190.6 | 申请日: | 2014-07-30 |
公开(公告)号: | CN104125283A | 公开(公告)日: | 2014-10-29 |
发明(设计)人: | 张径姝;施政 | 申请(专利权)人: | 中国银行股份有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 北京金信立方知识产权代理有限公司 11225 | 代理人: | 黄威;邓玉婷 |
地址: | 100818 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 集群 消息 队列 接收 方法 系统 | ||
技术领域
本发明涉及通信领域,更具体的,涉及一种用于集群的消息队列的接收方法。
背景技术
计算机集群简称集群,是一种并行或分布式处理系统。集群就是通过一组松散集成的计算机相互连接,高度紧密地协作完成所需要的计算工作。其中,单个计算机通常被称为节点。在集群中节点进行并行处理、存储数据、进行协同工作,使得集群对外表现为一个整体。
消息队列(MQ)是一种应用程序间进行进程通信的方法。应用程序通过写入和读取出入队列的针对应用程序的数据(消息)来通信,而无需专用连接。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过远程过程调用实现通信。队列的使用除去了接收和发送应用程序需要同时执行的要求,实现程序间解耦的目的。消息队列是一个典型的生产者、消费者模型,一端往消息队列中不断的写入消息,而另一端则可以读取或者订阅队列中的消息。
MQ提供了消息分段的功能,如果消息对于应用程序来说过大,可以使用分段消息。消息可以由应用程序或队列管理器来分段,例如由应用程序在调用MQPUT放入消息时,使用MQ提供的分段参数设置,将一个消息分段为多个消息放入队列。如下是一个应用程序将消息分段发送的示例:
对于应用程序分段的消息,在调用MQGET取出消息时,使用MQ提供的参数设置,可在分段消息全部到达时作为一个整体取出,如下是将分段消息作为整体取出的MQ参数设置示例:
MQGMO.Options=MQGMO_SYNCPOINT
MQGMO.Options|=MQGMO_LOGICAL_ORDER|
MQGMO_ALL_MSGS_AVAILABLE|
MQGMO_ALL_SEGMENTS_AVAILABLE;
MQGMO.MatchOptions=MQMO_NONE;
在非集群环境下,分段消息经过传输队列到达目标接收队列,可以通过设置相关参数,在到齐后再进行读取,即可从接收队列取出整个消息,多段消息可自动合并为一段作为整体被取出。
但是在集群环境中,分段消息如果从集群外的队列管理器经过集群网关发送到集群内的各节点,则不能确保一组分段消息中的各段消息都到达同一队列管理器上的队列,这样分段消息被分发到了集群中不同的队列中,由于每个节点上消息不完整,无法通过设置相关参数,在一组分段消息的所有分段到齐后再进行读取。
发明内容
本发明的目的是提供一种能够用于集群环境的消息队列分段接收方法,并能够确保接收的消息完整。
为此,本发明提供了一种用于集群的消息队列接收方法,其包括:
S1、以读取独立消息的方式从集群中的各个消息队列读取多个分段消息并存储到分段消息表中,所述多个分段消息来自多个不同的完整消息;
S2、扫描所述分段消息表,根据所述分段消息中的消息Flag确定该分段消息是否为来自同一个完整消息的多个分段消息中的最后一段消息;
S3、根据已被确定为最后一段消息的所述分段消息的消息描述符计算该分段消息所属的完整消息的总长度并进行记录;
S4、将所述分段消息表中的各所述分段消息按消息ID进行排序,对具有同一消息ID的一组分段消息进行长度求和,如果计算的该长度等于步骤S3中计算的所述总长度,则将该组分段消息拼接为所述完整消息并存储到完整消息接收表中。
本发明同时提供了一种用于集群的消息队列接收系统,其包括:
读取单元,其配置为以读取独立消息的方式从集群中的各个消息队列读取多个分段消息并存储到分段消息表中,所述多个分段消息来自多个不同的完整消息;
扫描单元,其配置为扫描所述分段消息表,并根据所述分段消息中的消息Flag确定该分段消息是否为来自同一个完整消息的多个分段消息中的最后一段消息;
计算单元,其配置为根据由所述扫描单元确定为最后一段消息的所述分段消息的消息描述符计算该分段消息所属的完整消息的总长度,以及对具有同一消息ID的一组分段消息进行长度求和;
拼接单元,其配置为当所述计算单元计算的长度求和值等于其计算的所述总长度,则将该组分段消息拼接为所述完整消息并存储到完整消息接收表中;
存储单元,其连接到所述读取单元、扫描单元、计算单元和拼接单元,用于存储所述分段消息表、所述完整消息接收表、所述长度求和值和所述总长度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国银行股份有限公司,未经中国银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410370190.6/2.html,转载请声明来源钻瓜专利网。