基于消息队列的消息传输方法、装置及设备制造方法及图纸

技术编号:24852710 阅读:19 留言:0更新日期:2020-07-10 19:06
本申请公开了一种基于消息队列的消息传输方法、装置及设备,属于计算机数据通讯领域。所述方法包括:获取消息文件,所述消息文件采用所述消息队列的形式存储有生产者程序生成的消息,该消息文件可以是被创建的固定大小的消息持久化文件;从消费者状态数据中确定消费者程序在所述消息文件上的读取位置,所述消费者状态数据与所述消费者程序一一对应;根据所述读取位置读取所述消息文件中的第一消息;将所述第一消息发送至所述消费者程序。当多个消费者程序读取消息队列中的消息时,无需消息队列将消息拷贝多份消息副本,实现了多个消费者彼此独立地消费消息,提高了消息队列的传输消息的效率。

【技术实现步骤摘要】
基于消息队列的消息传输方法、装置及设备
本申请涉及计算机数据通讯领域,特别涉及一种基于消息队列的消息传输方法、装置及设备。
技术介绍
消息队列(MessageQueue,MQ)是一种应用程序间的通信方式,应用程序在将消息发送至消息队列后可以立即返回,由消息系统来确保消息的可靠传递。消息的生产者(消息发布者)将消息发布到消息队列中,消息的消费者(消息主动获取者)从消息队列中获取消息,生产者和消费者之间互不干扰。相关技术中,消费者通过消息通道(channel)主动获取消息队列中的消息,消费通道是指消费者从消息队列中主动获取消息的途径,当多个消费者消费同一类型的消息时,消息队列将一份消息拷贝为多份消息副本,多个消费者从各自对应的消息通道中获取一份消息副本。基于上述情况,多个消费者消费同一类型的消息时,需要占用较大的存储空间,消息队列在传输消息时的效率较低。
技术实现思路
本申请实施例提供了一种基于消息队列的消息传输方法、装置及设备,使得多个消费者消费同一类型的消息时,消息队列在传输消息的效率较高。所述技术方案如下:根据本申请的一个方面,一种基于消息队列的消息传输方法,所述方法包括:获取消息文件,所述消息文件采用所述消息队列的形式存储有生产者程序生成的消息;从消费者状态数据中确定消费者程序在所述消息文件上的读取位置,所述消费者状态数据与所述消费者程序一一对应;根据所述读取位置读取所述消息文件中的第一消息;将所述第一消息发送至所述消费者程序。<br>根据本申请的另一方面,提供了一种基于消息队列的消息传输装置,所述装置包括:获取模块,用于获取消息文件,所述消息文件采用所述消息队列的形式存储有生产者程序生成的消息;处理模块,用于从消费者状态数据中确定消费者程序在所述消息文件上的读取位置,所述消费者状态数据与所述消费者程序一一对应;读取模块,用于根据所述读取位置读取所述消息文件中的第一消息;发送模块,用于将所述第一消息发送至所述消费者程序。根据本申请的另一方面,提供了一种计算机设备,所述计算机设备设置有传感器,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上方面所述的基于消息队列的消息传输方法。本申请实施例提供的技术方案带来的有益效果至少包括:通过消息队列获取存储有消息的消息文件,根据消费者状态数据确定消费者程序的读取位置,根据消费者的读取位置将读取到的消息发送至消费者程序。当多个消费者程序读取消息队列中的消息时,无需消息队列将消息拷贝多份消息副本,实现了多个消费者彼此独立地消费消息,提高了消息队列的传输消息的效率。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本申请一个示例性实施例提供的计算机系统的示意图;图2是本申请一个示例性实施例提供的服务器的结构框图;图3是本申请一个示例性实施例提供的消息系统的结构示意图;图4是本申请一个示例性实施例提供的基于消息队列的消息传输方法的流程图;图5是本申请另一个示例性实施例提供的基于消息队列的消息传输方法的流程图;图6是本申请另一个示例性实施例提供的消息系统的结构示意图;图7是本申请一个示例性实施例提供的消息队列进行写入操作的方法的流程图;图8是本申请一个示例性实施例提供的某时刻消息文件的读取情况的示意图;图9是本申请一个示例性实施例提供的基于消息队列的消息消费方法的流程图;图10是本申请另一个示例性实施例提供的某时刻消息文件的读取情况的示意图;图11是本申请另一个示例性实施例提供的基于消息队列的消息消费方法的流程图;图12是本申请一个示例性实施例提供的基于消息队列的消息传输装置框图;图13是本申请一个示例性实施例提供的基于消息队列的消息消费装置框图;图14是本申请一个示例性实施例提供的计算机设备的装置结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。首先,对本申请实施例中涉及的名词进行介绍:生产者:是指生成消息的应用程序或模块,比如,社交应用程序。消费者:是指读取消息的应用程序或模块,可对读取到的消息进行后续处理。比如,社交应用程序需要从读取短信应用程序中的验证码。图1示出了本申请一个示例性实施例提供的计算机系统的结构框图。该计算机系统100包括:支持发送消息的应用程序120(生产者程序)、支持获取消息的应用程序160(消费者程序)和消息队列140。生产者程序120与消息队列140建立连接。生产者程序120包括:社交类应用程序、购物类应用程序、视频类应用程序、音乐类应用程序、图像类应用程序等等。消息队列140包括一台服务器、多台服务器、云计算平台和虚拟化中心中的至少一种。消息队列140包括存储器142和处理器144,存储器142用于存储生产者程序120发布的消息,处理器144用于支持消费者程序160获取生产者生成的消息。消费者程序160与消息队列140建立连接。消费者程序160包括:社交类应用程序、购物类应用程序、视频类应用程序、音乐类应用程序、图像类应用程序等等。可选地,生产者程序120和消费者程序160可以是相同的应用程序,或不同类的应用程序,或相同类别下的不同的应用程序。可选地,生产者程序120和消息队列140在同一终端中,或者,消费者程序160和消息队列140在同一终端中,或者,生产者程序120和消费者程序160在同一终端中,或者,生产者程序120、消费者程序160和消息队列140在同一终端中,或者,生产者程序120、消费者程序160和消息队列140三者分别分布在不同的终端上。可选地,消息队列140承担主要计算工作,生产者程序120和消费者程序160承担次要计算工作;或者,消息队列140承担次要计算工作,生产者程序120和消费者程序160承担主要计算工作;或者,消息队列140、生产者程序120和消费者程序160三者之间采用分布式计算架构进行协同计算。可以理解的是,在计算机系统100中存在至少一个生产者程序120和至少一个消费者程序160,本实施例仅以一个生产者程序120和一个消费者程序160为例进行说明。上述生产者程序120和消费者程序160所在的终端的设备类型相同或不同,该设备类型包括:智能手机、平板电脑、电子书阅读器、MP3播放器、MP4播放器、膝上型便携计算机和台式计算机中、笔记本电脑的至少一种。本领域技术人员可以知晓,上述本文档来自技高网...

【技术保护点】
1.一种基于消息队列的消息传输方法,其特征在于,所述方法包括:/n获取消息文件,所述消息文件采用所述消息队列的形式存储有生产者程序生成的消息;/n从消费者状态数据中确定消费者程序在所述消息文件上的读取位置,所述消费者状态数据与所述消费者程序一一对应;/n根据所述读取位置读取所述消息文件中的第一消息;/n将所述第一消息发送至所述消费者程序。/n

【技术特征摘要】
1.一种基于消息队列的消息传输方法,其特征在于,所述方法包括:
获取消息文件,所述消息文件采用所述消息队列的形式存储有生产者程序生成的消息;
从消费者状态数据中确定消费者程序在所述消息文件上的读取位置,所述消费者状态数据与所述消费者程序一一对应;
根据所述读取位置读取所述消息文件中的第一消息;
将所述第一消息发送至所述消费者程序。


2.根据权利要求1所述的方法,其特征在于,所述消费者程序为至少两个,每个所述消费者程序对应有各自的消费者状态文件,所述消费者状态文件中存储有所述消费者程序的所述消费者状态数据。


3.根据权利要求1所述的方法,其特征在于,所述消息文件包括按照顺序排列的至少两个消息文件,所述读取位置包括:第一消息文件标识和第一消息文件偏移;
所述根据所述读取位置读取所述消息文件中的所述第一消息,包括:
根据所述读取位置中的所述第一消息文件标识,在所述至少两个消息文件中确定出待读取的第一目标消息文件;
根据所述读取位置中的所述第一消息文件偏移,在所述第一目标消息文件中读取所述第一消息。


4.根据权利要求1所述的方法,其特征在于,所述消息文件包括至少两类消息文件,每类所述消息文件对应各自的消息标签;
所述获取消息文件,包括:
确定所述消费者程序所对应的第一消息标签;
从所述至少两类消息文件中,确定与所述第一消息标签对应的消息文件。


5.根据权利要求1至4任一所述的方法,其特征在于,所述消息文件包括按照顺序排列的至少两个消息文件,每个所述消息文件具有文件大小上限,所述方法还包括:
获取所述生产者程序生成的第二消息;
获取所述生产者程序的最近一次写入位置,所述最近一次写入位置包括:第二消息文件标识和第二消息文件偏移;
响应于第二消息总量在第k个消息文件中未达到所述文件大小上限,将所述第二消息写入所述第k个消息文件中,更新所述最近一次写入位置;所述第k个消息文件是所述第二消息文件标识对应的消息文件,所述第二消息总量是所述第二消息的数据量与所述第二消息文件偏移的加和,k≥2,且k为正整数;
响应于所述第二消息总量...

【专利技术属性】
技术研发人员:张阳崔昌栋钱佳林柴猛崔永超尹涛陈慧敏姜凯洋朱树强张朝旭刘文杰王仁斌张宏振
申请(专利权)人:远景智能国际私人投资有限公司上海远景科创智能科技有限公司
类型:发明
国别省市:新加坡;SG

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

1