java - 从 java web 应用程序启动很长的后台进程的最佳方法是什么?

标签 java multithreading jakarta-ee web long-running-processes

当您想通过单击用户界面(例如漂亮的 jsf 页面)来启动运行时间超过几个小时的脚本(.sh、jar、.py、.pl...)时。 抛出进程的最佳方法是什么? Running.exec() 方法、线程的使用还是其他什么? 谢谢。

最佳答案

绝对不要在 Java Web 应用程序中使用长时间运行的线程。将带有任务的消息(最好通过队列(例如rabbitmq))发送到具有自己的线程池的单独应用程序,然后该应用程序将独立处理Web应用程序用户请求的长时间运行的任务。

如果您的系统没有安装消息传递系统,并且您发现管理一个消息系统的开销太高,并且您已经在使用一些 sql 或 no-sql 或任何存储,那么您可能可以调整该存储来使用用于网络应用程序和新的单独的长请求运行程序应用程序之间的通信。

关于java - 从 java web 应用程序启动很长的后台进程的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23312828/

相关文章:

java - 如何修复Spring Web应用程序的 ‘404--Not Found'问题

java - 从 gradle osgi 插件切换到 org.dm.bundle 插件时出错

Java:使用 BFS 寻找最短路径时出现问题

Java 多线程中的 volatile 关键字

java - 库中的 slf4j 似乎忽略了我的 log4j2 配置

java - 避免在 RESTful Web 服务中加载整个对象图

java - Spring Boot 不从 thymeleaf 返回值

java - webapps 未获取 tomcat 7 conf/web.xml 自定义错误页面

c# - 避免调试器因线程中捕获的异常而停止

C# 线程安全扩展方法