从Apache ServiceMix中启动长时间运行的进程

时间:2014-06-27 01:00:11

标签: java multithreading apache-servicemix

我正在寻找建议或想法。

有一个外部进程(甚至是浏览器)需要通过简单的Web服务调用触发长时间运行的进程,理想情况下应该在与该Web服务相同的容器中运行。我们正在使用Apache ServiceMix。 Web服务本身不应该在长时间运行的过程中保持活动状态,除此之外它可能只是暂停,所以我们希望它通常会立即返回响应。

最初,我正在考虑使用ProcessBuilder()来启动长时间运行的进程,就像另一个应用程序一样,但这样做会引入某些操作系统依赖性,而且似乎不太理想。我们考虑的一个选项是从请求中启动另一个线程,只是让请求立即完成响应,而长时间运行的线程会在需要时继续运行。我担心资源劫持容器以及长时间运行线程的健康状况,当它的启动器/父服务器退出时会丢失对该长期运行的孩子的任何引用。

如果有人对如何以优雅的方式解决这个问题有任何好的想法,请告诉我。

非常感谢!

1 个答案:

答案 0 :(得分:0)

我在这里猜测,因为你没有提供servicemix的版本。虽然使用servicemix附带的Camel,但我有两条路由,第一条提供Web服务,第二条路由进行长时间运行。第二个路由应该使用seda组件。这将为您提供异步调用。