Мне нужен диспетчер очереди заданий, который я могу контролировать через Интернет. Он должен иметь возможность запускать и останавливать процессы, проверять их статус (в идеале замечать и выполнять некоторый код при выходе процесса), отвечать на команды и также получать отчет на сервере.
Справочная информация. У меня есть приложение GWT, которое позволяет создавать задания для выполнения на экземпляре облака (в настоящее время EC2). Я хочу нажать "пакет заданий" (данные для процесса для работы и т.д.) На S3, запустить экземпляр Linux EC2 (или использовать тот, который уже запущен), и сообщить менеджеру заданий о экземпляре выполнить эту работу (возможно параллельно с другими заданиями). Затем он должен вытащить "пакет заданий" из S3, запустить процесс, который работает с этими данными, и отчитываться на сервере, на котором выполняется серверная часть моего приложения GWT, с некоторой информацией (например, кодом выхода, stdout, stderr). Если мне нужно написать, например. stdour/err в файл из процесса и прочитать этот файл, это тоже ОК.
Мне бы очень хотелось, чтобы менеджер был "близок" к процессам, которые он запускал, то есть я хочу избежать использования чего-то вроде Runtime.exec из JDK. Похоже, мне пришлось бы это сделать, если бы я использовал Кварц, например.
Мне хорошо, что вызовы в обоих направлениях являются асинхронными. Я хорошо разбираюсь в любых разумных технологиях для вызовов, пока я могу легко создать интерфейс для этого на моей стороне сервера GWT (например, HTTP-запросы на сервлет через SSL будут приятными и тривиальными).
Менеджеру заданий не нужно иметь очень сложную систему очередей. Выполнение нескольких процессов либо последовательно, либо параллельно должно быть прекрасным. Определить, сколько времени вычислений получило бы процесс, полученный в течение его жизни, было бы неплохо (AFAIK, это может быть сложно).
Я еще не нашел какое-либо существующее программное обеспечение, которое делает это, включая http://java-source.net/open-source/job-schedulers. Я подозреваю, что мне, возможно, придется создавать RPC-интерфейс (с проверкой подлинности и т.д., Конечно) вокруг менеджера заданий; возможно, используйте что-то вроде Apache Commons Exec. В этом случае я бы предпочел Java или Python для части менеджера заданий.
Я был бы рад услышать предложения по первому или последнему сценарию!