如何从一个程序启动另一个程序

How to start one program from another program

我有两个项目,project1 和 project2。

案例一: Project1 和 Project2 在同一台机器上。如果 project2 崩溃或终止,Project1 应该重新启动 project2。

案例二: Project1 和 Project2 在不同的机器上。如果 project2 崩溃或终止,Project1 应该重新启动 project2。

这些是 java 项目。

我该如何完成上述任务?

编辑:

我想到了以下解决方案:

  1. 如果项目在同一台机器上,那么我可以将 Project2 保留在 Project1 的类路径中,然后从 project1 重新启动 project2。但有个问题。然后这两个实体将成为一个程序。
  2. 如果这些项目在不同的计算机上,那么我可以有一些第三个程序 运行 以及我认为永远不会崩溃的 project2。而这第三个程序可以恢复项目2。

不确定,关于我的解决方案。需要您的输入。

我们使用 RabbitMQ:项目 1 使用 RabbitMQ 发送关于任务的请求,项目 2 发送关于他使用 RabbitMQ 的工作的通知。如果 Project2 在一段时间内(例如,在 30 秒内)未发送通知,则 Project1 仅使用 OS 命令启动新的 Project2 实例或发送请求 Project3 在某些机器(如 Project1)中仅用于启动 Project1 实例使用 OS 命令。

当然,您可以使用任何消息代理,而不仅仅是 RabbitMQ。

But, there is a problem. Then these two entities will become a single program.

不,最好将所有项目作为单独的程序启动,如果Project2 出现内存不足等错误,Project1 也会死掉。使用 ProcessBuilder 等运行 Java 应用程序完全不是问题。

情况 1:一个应用程序可以启动另一个应用程序:ProcessBuilder

Executing another application from Java

情况2:问的几乎不可能。您需要项目 2 的机器中的东西 运行。