我有两个项目,project1和project2。
案例1: Project1和Project2在同一台机器上。如果project2崩溃或终止,Project1应该重新启动project2。
案例2: Project1和Project2在不同的机器上。如果project2崩溃或终止,Project1应该重新启动project2。
这些是java项目。
我应该如何执行上述任务?
修改
我在考虑以下解决方案:
不确定,关于我的解决方案。您的输入是必需的。
答案 0 :(得分:2)
我们使用RabbitMQ:Project1使用RabbitMQ和Project2发送有关任务的请求,发送有关他的作业的未通知RabbitMQ的通知。如果Project2在一段时间内没有发送通知(例如,在30秒内),Project1仅使用OS命令启动新的Project2实例,或者在某些机器(如Project1)中发送请求Project3,并仅使用OS命令启动Project1实例。
当然,您可以使用任何消息代理,而不仅仅是RabbitMQ。
但是,有一个问题。那么这两个实体将成为单一的 程序
不,最好将所有项目作为单独的程序启动,如果Project2出现Out Of Memory错误等,Project1也会死亡。使用ProcessBuilder等运行Java应用程序并不是一个问题。
答案 1 :(得分:1)
案例1:一个应用程序可以启动另一个:ProcessBuilder
Executing another application from Java
案例2:按要求准几乎不可能。你需要在项目2的机器上运行一些东西。