问题的标题说明了一切。这是在Cloud Foundry环境中发生的。应用程序结构是这样的,有两个数据库,一个是Mysql,另一个是Oracle,两者都已配置,并且其数据源创建良好。

最终目标是使用Springboot应用程序(ETL)将oracle数据库中存在的数据提取到mysql数据库中。在oracle数据库中运行选择查询大约需要30分钟,因为在执行选择查询后,将对具有大约10000条记录的巨大数据的表应用联接。

当我在eclipse IDE中在本地环境中运行相同的程序时,它的效果很好。但是问题出在云环境中。

当我在云环境的浏览器中运行其余链接时。它运行大约10到15分钟,并抛出504 httpstatus,我观察到的是在后台在应用程序中提取数据。我可以在保留的日志中看到这一点。但在浏览器中会引发异常。

我想显示我的代码,如果它是我的,但实际上是公司工作,这就是为什么我不能显示它的原因。

有人可以帮我解决504错误吗?

最佳答案

根据您共享的有限信息,您似乎正在调用REST API来运行ETL作业,该作业将数据从一个数据库传输到另一个数据库,这是一项耗时/长时间的工作。在我看来,这是异步操作而不是同步操作的不错选择。根据您提供的详细信息,我建议您的REST API应该触发一个新线程,该线程负责在后台运行ETL作业,如果成功触发了该线程,则立即在响应中返回成功。然后,您可以在UI上执行另一个操作,该操作将显示ETL作业的状态,该状态必须维护在数据库中的某个位置,然后使用服务从那里进行拾取并显示在UI上。

注意:如果同步执行,则对于如此长时间运行的操作,网关超时是不可避免的,除非您增加相应服务的超时,否则我不建议这样做。

关于java - 从oracle数据库获取数据时浏览器中的504网关超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52868791/

10-13 07:08
查看更多