基于消息队列的数据导入导出方法及装置、介质、设备与流程

未命名 07-19 阅读:129 评论:0


1.本发明涉及数据处理技术领域,尤其是涉及一种基于消息队列的数据导入导出方法及装置、介质、设备。


背景技术:

2.数据导入导出是业务系统的基础功能,目前各个业务系统中的数据量越来越大,数据类型也越来越复杂,很多数据往往需要进行线下收集整理再导入业务系统或者从业务系统中导出时需要通过线下方式分发到相关人员。而导入导出的数据除了结构化数据外,往往存在图片、word文件、excel文件、压缩文件等附件,在处理结构化数据的同时,还需要对附件进行处理。
3.由于大量的导入导出操作会花费大量的时间,而目web应用追求快速响应,各个环节网关均有响应时效限制,导致很难在短时间内将数据进行正常的导入导出。为了更高效的实现数据导入导出,减少用户等待时间,提高系统吞吐量,有必要提供一种新的导入导出方案。


技术实现要素:

4.针对以上至少一个技术问题,本发明实施例提供一种基于消息队列的数据导入导出方法及装置、介质、设备。
5.根据第一方面,本发明实施例提供的基于消息队列的数据导入导出方法,包括:
6.将待导入文件上传至应用服务模块,以使所述应用服务模块将所述待导入文件上传至对象存储服务模块中进行存储,生成导入任务,并将所述导入任务推送至消息队列中;其中,所述待导出文件中包括结构化数据和所述附件;
7.当任务服务模块监听到所述消息队列中有新的任务后,若该任务为导入任务,则从所述对象存储服务模块中下载该导入任务对应的待导入文件,并将所述待导入文件导入至数据库中。
8.根据第二方面,本发明实施例提供的基于消息队列的数据导入导出装置,包括:
9.第一导入模块,用于将待导入文件上传至应用服务模块,以使所述应用服务模块将所述待导入文件上传至对象存储服务模块中进行存储,生成导入任务,并将所述导入任务推送至消息队列中;其中,所述待导出文件中包括结构化数据和所述附件;
10.第二导入模块,用于当任务服务模块监听到所述消息队列中有新的任务后,若该任务为导入任务,则从所述对象存储服务模块中下载该导入任务对应的待导入文件,并将所述待导入文件导入至数据库中。
11.根据第三方面,本发明实施例提供计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行实现第一方面提供的方法。
12.根据第四方面,本发明实施例提供的计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面提供的方法。
13.本发明实施例提供的基于消息队列的数据导入导出方法及装置、介质、设备,通过建立导入任务,通过消息队列对导入任务进行管理,而且基于对象存储服务模块实现导入操作。通过这种方式可以实现将文件进行异步的导入,用户在前端进行相关操作后,后端服务器会按照消息队列中各个任务的顺序依次执行,用户不必执行大量的手动导入操作,而且解决了多元数据的导入速度慢、网络超时的问题,降低了数据处理长链接的并发,保障了业务系统的稳定性,提高用户体验。即,本发明实施例可以减少用户等待,防止网络超时,降低服务器负载,提高应用的高可用性,也更加符合微服务的理念。
附图说明
14.图1为本发明一实施例中基于消息队列的数据导入导出方法的流程示意图。
具体实施方式
15.第一方面,本发明实施例提供一种基于消息队列的数据导入导出方法,参见图1,该方法包括如下步骤s110~s120:
16.s110、将待导入文件上传至应用服务模块,以使所述应用服务模块将所述待导入文件上传至对象存储服务模块中进行存储,生成导入任务,并将所述导入任务推送至消息队列中;其中,所述待导出文件中包括结构化数据和所述附件;
17.s120、当任务服务模块监听到所述消息队列中有新的任务后,若该任务为导入任务,则从所述对象存储服务模块中下载该导入任务对应的待导入文件,并将所述待导入文件导入至数据库中。新的任务后,若该任务为导入任务,则
18.在实际场景中,用户在前端将结构化数据和附件整理成待导入文件,然后将待导入文件上传至后端服务器。后端服务器在接收到待导入文件后,将待导入文件上传至应用服务模块,应用服务模块为提供应用服务的模块。应用服务模块将待导入文件上传至对象存储服务模块中,对象存储服务模块用来提供对象存储服务。然后应用服务模块会生成一个导入任务,然后将该导入任务发送给消息队列中。当任务服务模块监听到消息队列中添加了新的导入任务时,如果当前没有其它的任务执行,则直接执行该新的导入任务,否则按照顺序依次执行消息队列中的各个任务。当任务服务模块在执行一个导入任务时,首先从对象服务模块中下载该导入任务对应的待导入文件,将该待导入文件导入至数据库中,从而完成文件的导入工作。
19.在一个实施例中,本发明实施例提供的方法还可以包括:
20.对所述导入任务的状态进行回写,以使前端用户查看到是否成功完成对所述待导入文件的导入工作。
21.例如,在完成一个导入任务之后,任务服务模块将该导入任务的状态进行回写,状态是指是否成功完成该导入任务,回写是指向前端进行反馈。这样前端的用户就能得知是否成功完成对待导入文件的导入工作。
22.在一个实施例中,本发明实施例提供的方法还可以包括:
23.将所述待导入文件中的附件上传至所述对象存储服务模块中。
24.例如,在完成一个导入任务之后,任务服务模块就会将该导入文件中的附件上传至对象存储服务模块,这样是为了便于实现后续用户对包括该附件的文件进行导出工作。
25.在一个实施例中,本发明实施例提供的方法还可以包括:
26.将所述导入任务保存至所述数据库中。
27.例如,应用服务模块将导入任务存储在数据库中,这样在消息队列出现问题时,可以从数据库中获取导入任务,保证导入工作的正常进行。
28.在一个实施例中,本发明实施例提供的方法还可以包括:
29.接收用户的数据查询条件;
30.将所述数据查询条件发送至所述应用服务模块,以使所述应用服务模块生成导出任务,并将所述导出任务推送至消息队列;
31.当所述任务服务模块监听到所述消息队列有新的任务时,若该任务为导出任务,则根据该导出任务对应的所述数据查询条件从所述数据库中查询对应的结构化数据,并从所述对象存储服务模块中查询对应的附件,将所述结构化数据和所述附件生成待导出文件,并将所述待导出文件上传至所述对象存储服务模块,以使用户在前端从所述对象存储服务模块进行文件下载。
32.在一个实际场景中,用户在前端设置了数据查询条件,当后端服务器接收到该数据查询条件时,将该数据查询条件发送给后端服务器上的应用服务模块,应用服务模块会生成一个导出任务,进而将该导出任务推送给消息队列。当任务服务模块监听到消息队列接收到一个新的任务时,若该任务为导出任务,则根据该导出任务对应的数据查询条件从数据库中查询对应的结构化数据,然后从对象存储服务模块中查询该结构化数据对应的附件,然后将结构化数据和附件组织成一个导出文件,然后将导出文件上传给对象服务模块,这样用户在前端可以进行对该导出文件的下载。
33.在一个实施例中,本发明实施例提供的方法还可以包括:
34.将所述导出任务的状态和下载地址进行回写,以使前端用户查看到是否成功完成对所述导出文件的导出工作,并在成功导出时按照所述下载地址进行下载。
35.例如,任务服务模块将导出任务的状态和下载地址回写,即反馈至前端,这样前端用户就可以得知该导出任务是否执行成功,若执行成功,则可以根据下载地址从对象服务模块中进行下载。
36.在一个实施例中,本发明实施例提供的方法还可以包括:
37.将所述导出任务保存至所述数据库。
38.例如,任务服务模块将导出任务保存至数据库,这样在消息队列出现问题时,可以从数据库中得知需要执行哪些导出任务,保证导出工作的正常进行。
39.参见下表1,可以了解导入任务的各项信息:
40.表1
[0041][0042][0043]
参见表2,可以理解导出任务的各项信息:
[0044]
表2
[0045][0046]
其中,在导入过程中,先将待导入文件存储在对象存储服务模块中,然后生成导入任务,将导入任务推送至消息队列中,由任务服务模块对消息队列中的导入任务进行消费,进而使得存储载对象服务模块中的待导入文件存储至数据库中,该数据库为业务系统的数据库,从而实现将文件导入业务系统。
[0047]
其中,在导出过程中,首先获取到数据查询条件,生成导出任务,将导出任务推送给消息队列,然后由任务服务模块对消息队列中的导出任务进行消费,进而根据数据查询条件从数据库中查询结构化数据,从对象存储服务模块中获取附件,然后将结构化数据和附件形成导出文件,然后将导出文件上传给对象存储服务模块中,实现文件导出,从而便于用户下载。
[0048]
可见,本发明实施例通过建立导入任务、导出任务,通过消息队列对导入任务、导出任务进行管理,而且基于对象存储服务模块实现导入导出操作。通过这种方式可以实现将文件进行异步的导入和导出,用户在前端进行相关操作后,后端服务器会按照消息队列中各个任务的顺序依次执行,从而用户可以在前端得知导入结果、得到下载地址进而进行下载等,用户不必执行大量的手动导入导出操作,而且解决了多元数据的导入导出速度慢、网络超时的问题,降低了数据处理长链接的并发,保障了业务系统的稳定性,提高用户体
验。即,本发明实施例可以减少用户等待,防止网络超时,降低服务器负载,提高应用的高可用性,也更加符合微服务的理念。
[0049]
第二方面,本发明实施例提供一种基于消息队列的数据导入导出装置,包括:
[0050]
第一导入模块,用于将待导入文件上传至应用服务模块,以使所述应用服务模块将所述待导入文件上传至对象存储服务模块中进行存储,生成导入任务,并将所述导入任务推送至消息队列中;其中,所述待导出文件中包括结构化数据和所述附件;
[0051]
第二导入模块,用于当任务服务模块监听到所述消息队列中有新的任务后,若该任务为导入任务,则从所述对象存储服务模块中下载该导入任务对应的待导入文件,并将所述待导入文件导入至数据库中。
[0052]
在一个实施例中,装置还包括:
[0053]
第一回写模块,用于对所述导入任务的状态进行回写,以使前端用户查看到是否成功完成对所述待导入文件的导入工作。
[0054]
在一个实施例中,装置还包括:
[0055]
第三导入模块,用于将所述待导入文件中的附件上传至所述对象存储服务模块中。
[0056]
在一个实施例中,装置还包括:
[0057]
第一保存模块,用于将所述导入任务保存至所述数据库中。
[0058]
在一个实施例中,装置还包括:
[0059]
第一接收模块,用于接收用户的数据查询条件;
[0060]
第一推送模块,用于将所述数据查询条件发送至所述应用服务模块,以使所述应用服务模块生成导出任务,并将所述导出任务推送至消息队列;
[0061]
第一导出模块,用于当所述任务服务模块监听到所述消息队列有新的任务时,若该任务为导出任务,则根据该导出任务对应的所述数据查询条件从所述数据库中查询对应的结构化数据,并从所述对象存储服务模块中查询对应的附件,将所述结构化数据和所述附件生成待导出文件,并将所述待导出文件上传至所述对象存储服务模块,以使用户在前端从所述对象存储服务模块进行文件下载。
[0062]
在一个实施例中,装置还包括:
[0063]
第二回写模块,用于将所述导出任务的状态和下载地址进行回写,以使前端用户查看到是否成功完成对所述导出文件的导出工作,并在成功导出时按照所述下载地址进行下载。
[0064]
在一个实施例中,装置还包括:
[0065]
第二保存模块,用于将所述导出任务保存至所述数据库。
[0066]
可理解的是,本发明实施例提供的装置中有关内容的解释、具体实施方式、有益效果、举例等内容可以参见第一方面提供的方法中的相应部分,此处不再赘述。
[0067]
第三方面,本发明实施例提供一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行第一方面提供的方法。
[0068]
具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或
mpu)读出并执行存储在存储介质中的程序代码。
[0069]
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
[0070]
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。
[0071]
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
[0072]
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展模块中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展模块上的cpu等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
[0073]
可理解的是,本发明实施例提供的计算机可读介质中有关内容的解释、具体实施方式、有益效果、举例等内容可以参见第一方面提供的方法中的相应部分,此处不再赘述。
[0074]
第四方面,本说明书一个实施例提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现执行说明书中任一个实施例中的方法。
[0075]
可理解的是,本发明实施例提供的计算设备中有关内容的解释、具体实施方式、有益效果、举例等内容可以参见第一方面提供的方法中的相应部分,此处不再赘述。
[0076]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0077]
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、挂件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
[0078]
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

技术特征:
1.一种基于消息队列的数据导入导出方法,其特征在于,包括:将待导入文件上传至应用服务模块,以使所述应用服务模块将所述待导入文件上传至对象存储服务模块中进行存储,生成导入任务,并将所述导入任务推送至消息队列中;其中,所述待导出文件中包括结构化数据和所述附件;当任务服务模块监听到所述消息队列中有新的任务后,若该任务为导入任务,则从所述对象存储服务模块中下载该导入任务对应的待导入文件,并将所述待导入文件导入至数据库中。2.根据权利要求1所述的方法,其特征在于,还包括:对所述导入任务的状态进行回写,以使前端用户查看到是否成功完成对所述待导入文件的导入工作。3.根据权利要求1所述的方法,其特征在于,还包括:将所述待导入文件中的附件上传至所述对象存储服务模块中。4.根据权利要求1所述的方法,其特征在于,还包括:将所述导入任务保存至所述数据库中。5.根据权利要求3所述的方法,其特征在于,还包括:接收用户的数据查询条件;将所述数据查询条件发送至所述应用服务模块,以使所述应用服务模块生成导出任务,并将所述导出任务推送至消息队列;当所述任务服务模块监听到所述消息队列有新的任务时,若该任务为导出任务,则根据该导出任务对应的所述数据查询条件从所述数据库中查询对应的结构化数据,并从所述对象存储服务模块中查询对应的附件,将所述结构化数据和所述附件生成待导出文件,并将所述待导出文件上传至所述对象存储服务模块,以使用户在前端从所述对象存储服务模块进行文件下载。6.根据权利要求5所述的方法,其特征在于,还包括:将所述导出任务的状态和下载地址进行回写,以使前端用户查看到是否成功完成对所述导出文件的导出工作,并在成功导出时按照所述下载地址进行下载。7.根据权利要求5所述的方法,其特征在于,还包括:将所述导出任务保存至所述数据库。8.一种基于消息队列的数据导入导出装置,其特征在于,包括:第一导入模块,用于将待导入文件上传至应用服务模块,以使所述应用服务模块将所述待导入文件上传至对象存储服务模块中进行存储,生成导入任务,并将所述导入任务推送至消息队列中;其中,所述待导出文件中包括结构化数据和所述附件;第二导入模块,用于当任务服务模块监听到所述消息队列中有新的任务后,若该任务为导入任务,则从所述对象存储服务模块中下载该导入任务对应的待导入文件,并将所述待导入文件导入至数据库中。9.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行实现实现权利要求1~7中的任一项所述的方法。10.一种计算设备,其特征在于,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1~7中的任一项所述的方法。

技术总结
本发明提供一种基于消息队列的数据导入导出方法及装置、介质、设备。方法包括:将待导入文件上传至应用服务模块,以使所述应用服务模块将所述待导入文件上传至对象存储服务模块中进行存储,生成导入任务,并将所述导入任务推送至消息队列中;其中,所述待导出文件中包括结构化数据和所述附件;当任务服务模块监听到所述消息队列中有新的任务后,若该任务为导入任务,则从所述对象存储服务模块中下载该导入任务对应的待导入文件,并将所述待导入文件导入至数据库中。发明实施例可以减少用户等待,防止网络超时,降低服务器负载,提高应用的高可用性,也更加符合微服务的理念。也更加符合微服务的理念。也更加符合微服务的理念。


技术研发人员:韩双成 段其朴 张峰 王彦功 张悦
受保护的技术使用者:浪潮软件科技有限公司
技术研发日:2023.04.03
技术公布日:2023/7/18
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐