我正在用Java编写简单的Web应用程序(仅用于教育目的),它允许管理员手动执行一些后台维护作业(例如通过Runtime.exec在系统上执行一些进程 - 它实际上不相关)。后台作业 ofc 在其自己的线程中运行并输出一些信息。我想知道,通过网络界面将该输出传递给用户的正确方法是什么?例如,管理员在几分钟后返回,并想要查看他运行的作业的输出。更重要的是,如何在集群环境中解决这个问题,其中作业在单个实例上运行,但输出查看发生在另一个实例上?是否有任何已知的良好实践?
我想,在非集群环境中,内存中的输出缓冲区就足够了。但在集群环境中,我只能想到该输出的数据库/文件存储,但这很麻烦(临时资源必须稍后删除等)。
提前致谢。
最佳答案
我建议使用数据库(尽管我同意你的观点,它只是一个临时资源)。
无论您使用什么存储介质,都需要在应用程序服务器集群之间共享,因此需要在某个时候进行整理。数据库对其他任何东西执行内务管理并不困难。
此外,这些“临时”资源随着时间的推移会变得永久,因为后台过程的结果变得更加重要(在审计员等看来),尽管这在您的情况下不太可能
关于java - 集群环境下后台作业的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6330033/