利索能及
我要发布
收藏
专利号: 2019106305082
申请人: 辽宁途隆科技有限公司
专利类型:发明专利
专利状态:已下证
更新日期:2026-08-12
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于Go语言的消息处理方法,其特征在于,包括:

接收待存储消息以及所述待存储消息对应的Channel;

获取与所述待存储消息对应的Channel相应的队列文件的描述符,以基于所述描述符打开相应的队列文件;

基于所述待存储消息的消息长度,更新所述队列文件的元数据,其中,更新后的元数据用于反应所述队列文件中的消息存储情况;

将所述待存储消息写入所述队列文件中,具体包括:将所述待存储消息写入所述队列文件时,若写至所述队列文件的末尾处时所述待存储消息存在未写入部分,则将所述未写入部分从所述队列文件的首部继续写入直至所述待存储消息全部写入。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

接收消息读取指令以及所述消息读取指令对应的Channel;

获取与所述消息读取指令对应的Channel相应的队列文件的描述符;

基于待读取消息的读取长度以及所述队列文件的缓冲区状态信息,更新所述队列文件的元数据;

根据所述读取长度,从所述队列文件中读取所述待读取消息。

3.根据权利要求2所述的方法,其特征在于,所述Channel包括至少一个,所述队列文件包括至少一个,任意一个所述Channel对应于一个所述队列文件,任意一个所述队列文件对应于一个所述Channel。

4.根据权利要求3所述的方法,其特征在于,所述元数据包括写缓冲区状态信息以及读缓冲区状态信息,所述写缓冲区状态信息包括写缓冲区滑动窗口地址以及写缓冲区滑动窗口大小,所述读缓冲区状态信息包括读缓冲区滑动窗口地址以及读缓冲区滑动窗口大小;

所述基于所述待存储消息的消息长度,更新所述队列文件的元数据,具体包括:基于所述待存储消息的消息长度,对当前的所述元数据中的所述写缓冲区滑动窗口地址、所述写缓冲区滑动窗口大小以及所述读缓冲区滑动窗口大小进行更新。

5.根据权利要求4所述的方法,其特征在于,所述基于所述待读取消息的读取长度以及所述队列文件的缓冲区状态信息,更新所述队列文件的元数据,具体包括:基于所述待读取消息的读取长度,对当前的所述元数据中的所述读缓冲区滑动窗口地址、所述读缓冲区滑动窗口大小以及所述写缓冲区滑动窗口大小进行更新。

6.根据权利要求1至5中任一项所述的方法,其特征在于,所述将所述待存储消息写入所述队列文件中,具体包括:将所述待存储消息序列化为二进制的数据类型后,写入所述队列文件中。

7.一种基于Go语言的消息处理装置,其特征在于,包括:

待存储消息接收模块,用于接收待存储消息以及所述待存储消息对应的Channel;

第一队列文件打开模块,用于获取与所述待存储消息对应的Channel相应的队列文件的描述符,以基于所述描述符打开相应的队列文件;

第一元数据更新模块,用于基于所述待存储消息的消息长度,更新所述队列文件的元数据,其中,更新后的元数据用于反应所述队列文件中的消息存储情况;

消息写入模块,用于将所述待存储消息写入所述队列文件中,具体包括:将所述待存储消息写入所述队列文件时,若写至所述队列文件的末尾处时所述待存储消息存在未写入部分,则将所述未写入部分从所述队列文件的首部继续写入直至所述待存储消息全部写入。

8.一种存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1至6中任一项所述的基于Go语言的消息处理方法。

9.一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至6中任一项所述的基于Go语言的消息处理方法。