我有两个项目,project1和project2。
情况1:
Project1和Project2在同一台计算机上。如果project2崩溃或终止,则Project1应该重新启动project2。
情况2:
Project1和Project2在不同的计算机上。如果project2崩溃或终止,则Project1应该重新启动project2。
这些是java项目。
我应该如何执行上述任务?
编辑:
我在考虑以下解决方案:
如果项目在同一台机器上,则可以将Project2保留在Project1的类路径中,然后从project1重新启动project2。但有个问题。然后,这两个实体将成为一个程序。
如果这些项目在不同的计算机上,那么我可以将第三个程序与project2一起运行,我将假定它永远不会崩溃。第三个程序可以使该项目恢复活力2。
不确定,关于我的解决方案。您的输入是必需的。
最佳答案
我们使用RabbitMQ:Project1使用RabbitMQ发送有关任务的请求,而Project2通过取消RabbitMQ发送有关其工作的通知。如果Project2在一段时间(例如30秒)内未发送通知,则Project1仅使用OS命令启动新的Project2实例,或者发送请求Project3,该请求在诸如Project1的某些计算机上仅用于使用OS命令启动Project1实例。
当然,您不仅可以使用RabbitMQ,还可以使用任何消息代理。
但有个问题。然后这两个实体将成为一个
程序。
不,最好将所有项目作为单独的程序启动,如果Project2出现内存不足错误等,则Project1也将消失。使用ProcessBuilder等运行Java应用程序完全不是问题。
关于java - 如何从另一个程序启动一个程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34049056/