一种文件生成方法、装置、设备及存储介质与流程

文档序号:32347982发布日期:2022-11-26 11:59阅读:46来源:国知局
一种文件生成方法、装置、设备及存储介质与流程

1.本发明涉及计算机技术领域,特别涉及一种文件生成方法、装置、设备及存储介质。


背景技术:

2.在实际的java web系统中,实际的文件生成比较消耗服务器性能,并且在中间伴随着文件生成方式解析,生成文件后需要进行字节转换,最后在以字节流的方式写入服务器中,如果不做文件生成和接口响应的解耦,那么客户端的响应会等着文件生成后在响应,对客户端使用人员很不友好。现有的大部分技术方案,程序内部通过mq(message queue,消息队列)发送消息,以在另一个服务中或本服务中另外的mq监听生成文件这种方式进行解耦。这样一来,如果发生同时接收到大量的请求,可能会导致消费端性能跟不上,导致消息的丢失。


技术实现要素:

3.有鉴于此,本发明的目的在于提供一种文件生成方法、装置、设备和存储介质,能够降低维护成本,提升性能并使用方便。其具体方案如下:
4.第一方面,本技术公开了一种文件生成方法,应用于服务器中的第一服务,包括:
5.实时监听消息队列,当监听到所述消息队列中存在数据变化时,获取变化的第一目标数据;
6.将所述第一目标数据存储至第一数据库;
7.从所述第一数据库中读取标签信息为未生成文件的数据,以获得第二目标数据;
8.将所述第二目标数据发送至异步线程,以便基于所述第二目标数据完成对应的文件生成操作,得到目标文件。
9.可选的,所述实时监听消息队列之前,还包括:
10.通过所述服务器中的第二服务接收客户端发送的请求,并从所述请求中抽取用于生成文件的第三目标数据;
11.将所述第三目标数据从所述第二服务发送至所述消息队列。
12.可选的,所述通过所述服务器中的第二服务接收客户端发送的请求之后,还包括:
13.判断所述请求是否满足预设入库规则;
14.若所述请求满足所述预设入库规则,则从所述请求中提取待存储信息;所述待存储信息包含参数与登录信息;
15.将所述待存储信息存储至第二数据库;
16.若所述请求不满足所述预设入库规则,则生成对应的提示信息,并将所述提示信息返回所述客户端。
17.可选的,所述将所述第一目标数据存储至第一数据库之后,还包括:
18.删除所述消息队列中的所述第一目标数据。
19.可选的,所述从所述第一数据库中读取标签信息为未生成文件的数据,以获得第二目标数据,包括:
20.设置定时器;
21.通过所述定时器定时从所述第一数据库中读取标签信息为未生成文件的数据,以获得第二目标数据。
22.可选的,所述将所述第一目标数据存储至第一数据库之后,还包括:
23.确定所述第一目标数据对应的文件生成状态信息,以得到第一目标状态信息;所述文件生成状态信息包含所述未生成文件、已生成文件、文件生成中;
24.基于所述第一目标状态信息生成对应的所述标签信息,并将所述标签信息添加至所述第一数据库中与所述第一目标数据对应的区域。
25.可选的,所述将所述第二目标数据发送至异步线程,以便基于所述第二目标数据完成对应的文件生成操作,得到目标文件之后,还包括:
26.通过所述异步线程生成并返回文件已生成信息,以便将所述第一数据库中的与所述第二目标数据对应的所述标签信息更改为所述已生成文件。
27.第二方面,本技术公开了一种文件生成装置,应用于服务器中的第一服务,包括:
28.第一数据获取模块,用于实时监听消息队列,当监听到所述消息队列中存在数据变化时,获取变化的第一目标数据;
29.数据存储模块,用于将所述第一目标数据存储至第一数据库;
30.第二数据获取模块,用于从所述第一数据库中读取标签信息为未生成文件的数据,以获得第二目标数据;
31.文件生成模块,用于将所述第二目标数据发送至异步线程,以便基于所述第二目标数据完成对应的文件生成操作,得到目标文件。
32.第三方面,本技术公开了一种电子设备,包括:
33.存储器,用于保存计算机程序;
34.处理器,用于执行所述计算机程序,以实现如前述公开的文件生成方法的步骤。
35.第四方面,本技术公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如前述公开的文件生成方法。
36.可见,本技术提供了一种文件生成方法,包括:实时监听消息队列,当监听到所述消息队列中存在数据变化时,获取变化的第一目标数据;将所述第一目标数据存储至第一数据库;从所述第一数据库中读取标签信息为未生成文件的数据,以获得第二目标数据;将所述第二目标数据发送至异步线程,以便基于所述第二目标数据完成对应的文件生成操作,得到目标文件。由此可见,本技术通过监听消息队列中是否存在变化数据,当监听到变化数据是提取该数据并存储,在数据库中为每个数据设置标签信息,然后获取标签信息为未生成文件的第二目标数据,将第二目标数据发送至异步线程完成文件生成操作,从而实现系统的解耦,无需再单独编写文件生成的代码,并且一个数据对应一个异步线程,彼此之间互不干扰,降低了维护成本,提升了性能并使用方便。
附图说明
37.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现
有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
38.图1为本技术公开的一种文件生成方法流程图;
39.图2为本技术公开的服务调用示意图;
40.图3为本技术公开的一种具体的文件生成方法流程图;
41.图4为本技术公开的工作流程图;
42.图5为本技术提供的文件生成装置结构示意图;
43.图6为本技术提供的一种电子设备结构图。
具体实施方式
44.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
45.目前,在实际的java web系统中,实际的文件生成比较消耗服务器性能,并且在中间伴随着文件生成方式解析,生成文件后需要进行字节转换,最后在以字节流的方式写入服务器中,如果不做文件生成和接口响应的解耦,那么客户端的响应会等着文件生成后在响应,对客户端使用人员很不友好。现有的大部分技术方案,程序内部通过mq发送消息,以在另一个服务中或本服务中另外的mq监听生成文件这种方式进行解耦,如果发生同时接收到大量的请求,可能会导致消费端性能跟不上,导致消息的丢失。为此,本技术提供了一种文件生成方法,能够降低维护成本,提升性能并使用方便。
46.本发明实施例公开了一种文件生成方法,参见图1所示,应用于服务器中的第一服务,该方法包括:
47.步骤s11:实时监听消息队列,当监听到所述消息队列中存在数据变化时,获取变化的第一目标数据。
48.本实施例中,实时监听消息队列,当监听到所述消息队列中存在数据变化时,获取变化的第一目标数据。可以理解的是,如图2所示,在服务器中第一服务(即服务b)实时监听消息队列,通过判断消息队列中是否存在变化的数据来决定是否从消息队列中读取数据,并且每次读取的数据为消息队列中本次读取与上一次读取数据之间存在差异的变化的数据,即为第一目标数据。在服务器中还存在第二服务(即服务a),第二服务会向消息队列中写入数据,以便第一服务读取第一目标数据。
49.步骤s12:将所述第一目标数据存储至第一数据库。
50.本实施例中,当监听到所述消息队列中存在数据变化时,获取变化的第一目标数据之后,将所述第一目标数据存储至第一数据库。可以理解的是,所述第一数据库中存储全部的数据,包含刚接收到的第一目标数据与历史第一目标数据,并且每个数据都设置根据与当前数据对应的状态信息得到的标签信息,以便根据标签信息判断仍未进行生成文件的步骤的数据。
51.步骤s13:从所述第一数据库中读取标签信息为未生成文件的数据,以获得第二目
标数据。
52.本实施例中,将所述第一目标数据存储至第一数据库之后,从所述第一数据库中读取标签信息为未生成文件的数据,以获得第二目标数据。可以理解的是,根据第一数据库中每个数据的标签信息,从第一数据库中读取标签信息为未生成文件的数据,得到准备执行文件生成步骤的第二目标数据。
53.步骤s14:将所述第二目标数据发送至异步线程,以便基于所述第二目标数据完成对应的文件生成操作,得到目标文件。
54.本实施例中,从所述第一数据库中读取标签信息为未生成文件的数据,获得第二目标数据之后,将所述第二目标数据发送至异步线程,以便基于所述第二目标数据完成对应的文件生成操作,得到目标文件。并且在得到目标文件之后,通过所述异步线程生成并返回文件已生成信息,以便将所述第一数据库中的与所述第二目标数据对应的所述标签信息更改为所述已生成文件。
55.可以理解的是,消息队列可实现异步消息发送,即将文件生成拆分到消息队列接收消息的方法中,发布消息到消息队列,从而实现异步的文件生成。而现有技术中,如果同时接收到大量的请求可能会导致消费端性能跟不上,导致消息的丢失。因此设计基于mq、mysql(一个关系型数据库管理系统)、线程池的分布式系统文件生成解耦方案,线程池是一种多线程处理形式,处理过程中将任务添加到消息队列,然后在创建线程后自动启动这些任务,线程池中的线程一般不会平凡的创建删除,可以有效节省服务器性能。mysql是一个关系型数据库管理系统、一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,增加了处理速度并提高了灵活性。从而在高并发场景下,只写入数据库数据,通过线程池异步执行文件生成等操作,并且实现了系统的解耦,多个系统只需要知道消息队列的地址都可以发起请求,无需单独编写文件生成代码。
56.可见,本技术提供了一种文件生成方法,包括:实时监听消息队列,当监听到所述消息队列中存在数据变化时,获取变化的第一目标数据;将所述第一目标数据存储至第一数据库;从所述第一数据库中读取标签信息为未生成文件的数据,以获得第二目标数据;将所述第二目标数据发送至异步线程,以便基于所述第二目标数据完成对应的文件生成操作,得到目标文件。由此可见,本技术通过监听消息队列中是否存在变化数据,当监听到变化数据是提取该数据并存储,在数据库中为每个数据设置标签信息,然后获取标签信息为未生成文件的第二目标数据,将第二目标数据发送至异步线程完成文件生成操作,从而实现系统的解耦,无需再单独编写文件生成的代码,并且一个数据对应一个异步线程,彼此之间互不干扰,降低了维护成本,提升了性能并使用方便。
57.参见图3所示,本发明实施例公开了一种文件生成方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。
58.步骤s21:通过所述服务器中的第二服务接收客户端发送的请求,并从所述请求中抽取用于生成文件的第三目标数据。
59.本实施例中,通过所述服务器中的第二服务接收客户端发送的请求,执行业务操作后,从所述请求中抽取用于生成文件的第三目标数据,并将所述第三目标数据从所述第二服务发送至所述消息队列。进一步的,通过所述服务器中的第二服务接收客户端发送的请求,判断所述请求是否满足预设入库规则,若所述请求满足所述预设入库规则,则从所述
请求中提取待存储信息,然后将所述待存储信息存储至第二数据库,若所述请求不满足所述预设入库规则,则生成对应的提示信息,并将所述提示信息返回所述客户端。
60.如图4所示,通过所述服务器中的第二服务(即服务a)接收客户端发送的请求,请求中包含参数与登录信息,然后通过参数与登录信息完成登录操作,若登录成功,则进入判断权限、数据格式等步骤,若上述步骤均成功,则判定所述请求满足所述预设入库规则,从所述请求中提取待存储信息,然后将所述待存储信息存储至第二数据库,并从中抽取用于生成文件的第三目标数据,将所述第三目标数据发送至所述消息队列,业务数据写入成功。
61.步骤s22:实时监听消息队列,当监听到所述消息队列中存在数据变化时,获取变化的第一目标数据。
62.步骤s23:将所述第一目标数据存储至第一数据库。
63.本实施例中,第一服务实时监听消息队列,当监听到消息队列中有新消息时直接将新消息写入第一数据库,不进行具体的文件生成操作。将所述第一目标数据存储至第一数据库之后,删除所述消息队列中的所述第一目标数据。
64.步骤s24:确定所述第一目标数据对应的文件生成状态信息,以得到第一目标状态信息。
65.本实施例中,确定所述第一目标数据对应的文件生成状态信息,以得到第一目标状态信息。所述文件生成状态信息包含所述未生成文件、已生成文件、文件生成中。可以理解的是,所述标签信息也可以是其他类型的标签,对此不作限制,体现出当前数据是否已生成文件即可。
66.步骤s25:基于所述第一目标状态信息生成对应的所述标签信息,并将所述标签信息添加至所述第一数据库中与所述第一目标数据对应的区域。
67.本实施例中,确定所述第一目标数据对应的文件生成状态信息,得到第一目标状态信息之后,基于所述第一目标状态信息生成对应的所述标签信息,并将所述标签信息添加至所述第一数据库中与所述第一目标数据对应的区域。可以理解的是,在每个数据存储至第一数据库之后,自动生成对应的标签信息进行标记,同时数据库中的全部数据均设置对应的标签信息。
68.步骤s26:设置定时器,通过所述定时器定时从所述第一数据库中读取标签信息为未生成文件的数据,以获得第二目标数据。
69.本实施例中,设置定时器,通过所述定时器定时从所述第一数据库中读取标签信息为未生成文件的数据,以获得第二目标数据。具体的,通过设置好的定时器不断查询数据库中未生成的文件记录,即定时读取第一数据库中标签信息为表征该数据未生成文件的数据,通过线程池技术并使用多线程的方式,充分利用cpu(central processing unit,中央处理器)性能生成对应的文件。
70.步骤s27:将所述第二目标数据发送至异步线程,以便基于所述第二目标数据完成对应的文件生成操作,得到目标文件。
71.本实施例中,将所述第二目标数据发送至异步线程,以便基于所述第二目标数据完成对应的文件生成操作,得到目标文件。可以理解的是,每个第二目标数据对应一个异步线程,多个异步线程之间彼此独立、互不干扰。并且在文件生成之后,向第一数据库返回文件生成信息,以便更改该数据在第一数据库中的标签信息,避免再次进行文件生成的步骤。
72.关于上述步骤s22的具体内容可以参考前述实施例中公开的相应内容,在此不再进行赘述。
73.可见,本技术实施例通过所述服务器中的第二服务接收客户端发送的请求,并从所述请求中抽取用于生成文件的第三目标数据;实时监听消息队列,当监听到所述消息队列中存在数据变化时,获取变化的第一目标数据;将所述第一目标数据存储至第一数据库;确定所述第一目标数据对应的文件生成状态信息,以得到第一目标状态信息;基于所述第一目标状态信息生成对应的所述标签信息,并将所述标签信息添加至所述第一数据库中与所述第一目标数据对应的区域;设置定时器,通过所述定时器定时从所述第一数据库中读取标签信息为未生成文件的数据,以获得第二目标数据;将所述第二目标数据发送至异步线程,以便基于所述第二目标数据完成对应的文件生成操作,得到目标文件,结构简单且降低了维护成本,提升了性能并使用方便。
74.参见图5所示,本技术实施例还相应公开了一种文件生成装置,应用于服务器中的第一服务,包括:
75.第一数据获取模块11,用于实时监听消息队列,当监听到所述消息队列中存在数据变化时,获取变化的第一目标数据;
76.数据存储模块12,用于将所述第一目标数据存储至第一数据库;
77.第二数据获取模块13,用于从所述第一数据库中读取标签信息为未生成文件的数据,以获得第二目标数据;
78.文件生成模块14,用于将所述第二目标数据发送至异步线程,以便基于所述第二目标数据完成对应的文件生成操作,得到目标文件。
79.可见,本技术包括:实时监听消息队列,当监听到所述消息队列中存在数据变化时,获取变化的第一目标数据;将所述第一目标数据存储至第一数据库;从所述第一数据库中读取标签信息为未生成文件的数据,以获得第二目标数据;将所述第二目标数据发送至异步线程,以便基于所述第二目标数据完成对应的文件生成操作,得到目标文件。由此可见,本技术通过监听消息队列中是否存在变化数据,当监听到变化数据是提取该数据并存储,在数据库中为每个数据设置标签信息,然后获取标签信息为未生成文件的第二目标数据,将第二目标数据发送至异步线程完成文件生成操作,从而实现系统的解耦,无需再单独编写文件生成的代码,并且一个数据对应一个异步线程,彼此之间互不干扰,降低了维护成本,提升了性能并使用方便。
80.在一些具体实施例中,所述第一数据获取模块11,具体包括:
81.请求接收单元,用于通过所述服务器中的第二服务接收客户端发送的请求;
82.第三目标数据抽取单元,用于从所述请求中抽取用于生成文件的第三目标数据;
83.请求判断单元,用于判断所述请求是否满足预设入库规则;
84.待存储信息提取单元,用于若所述请求满足所述预设入库规则,则从所述请求中提取待存储信息;所述待存储信息包含参数与登录信息;
85.待存储信息存储单元,用于将所述待存储信息存储至第二数据库;
86.提示信息返回单元,用于若所述请求不满足所述预设入库规则,则生成对应的提示信息,并将所述提示信息返回所述客户端;
87.第三目标数据发送单元,用于将所述第三目标数据从所述第二服务发送至所述消
息队列;
88.消息队列监听单元,用于实时监听消息队列;
89.第一目标数据获取单元,用于当监听到所述消息队列中存在数据变化时,获取变化的第一目标数据。
90.在一些具体实施例中,所述数据存储模块12,具体包括:
91.第一目标数据存储单元,用于将所述第一目标数据存储至第一数据库;
92.状态信息生成单元,用于确定所述第一目标数据对应的文件生成状态信息,以得到第一目标状态信息;所述文件生成状态信息包含所述未生成文件、已生成文件、文件生成中;
93.标签信息生成单元,用于基于所述第一目标状态信息生成对应的所述标签信息;
94.标签信息添加单元,用于将所述标签信息添加至所述第一数据库中与所述第一目标数据对应的区域;
95.第一目标数据删除单元,用于删除所述消息队列中的所述第一目标数据。
96.在一些具体实施例中,所述第二数据获取模块13,具体包括:
97.定时器设置单元,用于设置定时器;
98.第二目标数据获取单元,用于通过所述定时器定时从所述第一数据库中读取标签信息为未生成文件的数据,以获得第二目标数据。
99.在一些具体实施例中,所述文件生成模块14,具体包括:
100.文件生成单元,用于将所述第二目标数据发送至异步线程,以便基于所述第二目标数据完成对应的文件生成操作,得到目标文件;
101.文件已生成信息返回单元,用于通过所述异步线程生成并返回文件已生成信息,以便将所述第一数据库中的与所述第二目标数据对应的所述标签信息更改为所述已生成文件。
102.进一步的,本技术实施例还提供了一种电子设备。图6是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本技术的使用范围的任何限制。
103.图6为本技术实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的文件生成方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
104.本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
105.另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
106.其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序
222,其可以是windows server、netware、unix、linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的文件生成方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
107.进一步的,本技术实施例还公开了一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的文件生成方法步骤。
108.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
109.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
110.以上对本发明所提供的一种文件生成方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1