我需要一个可以通过Internet控制的作业队列管理器。它应该能够执行和停止进程,检查它们的状态(理想情况下通知并在进程退出时执行一些代码),响应命令并且还能够向服务器报告。
背景:我有一个GWT应用程序,允许创建在云实例(目前为EC2)上执行的作业。我想将“作业包”(进程操作的数据等)推送到S3,启动Linux EC2实例(或使用已经运行的实例),并告诉实例上的作业管理器执行该作业(可能与其他工作平行)。然后,它应该从S3中提取“作业数据包”,运行对该数据进行操作的进程,并使用一些信息(例如退出代码,stdout,stderr)向运行GWT应用程序的服务器部分的服务器报告。如果我必须写,例如stdour / err到进程中的文件并读取该文件,也没关系。
我真的希望管理员“关闭”它运行的进程,这意味着我想避免使用JDK中的Runtime.exec之类的东西。如果我以Quartz为例,似乎我必须这样做。
我很好,两个方向的呼叫都是异步的。只要我可以在我的GWT服务器端轻松构建一个接口(例如,通过SSL对servlet进行HTTP请求就会很好而且微不足道),我可以使用任何合理的调用技术。(
作业管理员不需要非常复杂的排队系统。顺序或并行运行几个进程应该没问题。确定一个进程在其生命周期内收到的计算时间是多么好(AFAIK,这可能具有挑战性)。
我还没有找到任何现有的软件,包括http://java-source.net/open-source/job-schedulers。我怀疑我可能需要围绕一个职业经理建立一个RPC接口(当然还有身份验证等);也许使用像Apache Commons Exec这样的东西。在这种情况下,我更喜欢Java或Python作为职位经理部分。
我很乐意听到有关前一种或后一种情况的建议!
答案 0 :(得分:0)
你的问题不是很清楚。
tmux
并通过SSH和/或CGI脚本编写脚本。但实际上,我不确定是否有通用的'将完全按照您的意愿行事的组件。只需启动您喜欢的框架,并从您喜欢的语言中读取系统调用。如果您学习了UNIX哲学,则可以从任何语言执行任何操作(运行过程,暂停/终止信号过程)。也许存储一个正在运行的工作的数据库等。