gwt rpc job-scheduling job-queue

gwt - Gestor de colas de trabajos con interfaz RPC



job-scheduling job-queue (1)

Necesito un administrador de colas de trabajo que pueda controlar a través de Internet. Debería poder ejecutar y detener procesos, verificar su estado (idealmente, observar y ejecutar algún código cuando finaliza un proceso), responder a los comandos y también poder informar a un servidor.

Antecedentes: tengo una aplicación GWT que permite crear trabajos para ejecutar en una instancia de nube (actualmente EC2). Quiero enviar un "paquete de trabajo" (datos para que un proceso funcione en etc.) a S3, iniciar una instancia de Linux EC2 (o usar una que ya se esté ejecutando), y decirle a un administrador de trabajos de la instancia que ejecute ese trabajo (posiblemente paralelo a otros trabajos). Luego debe extraer el "paquete de trabajo" de S3, ejecutar un proceso que funcione con esos datos e informar al servidor que ejecuta la parte del servidor de mi aplicación GWT con cierta información (por ejemplo, código de salida, stdout, stderr). Si tengo que escribir, por ejemplo, stdour / err en un archivo del proceso y leer ese archivo, eso también está bien.

Realmente me gustaría que el administrador esté "cerca" de los procesos que ejecuta, lo que significa que quiero evitar usar algo como Runtime.exec desde el JDK. Parece que tendría que hacerlo si, por ejemplo, usara cuarzo.

Estoy bien con las llamadas en ambas direcciones siendo asíncronas. Estoy bien con cualquier tecnología razonable para las llamadas siempre que pueda crear fácilmente una interfaz para eso en mi servidor GWT (por ejemplo, las solicitudes HTTP a un servlet sobre SSL serían agradables y triviales).

El administrador de trabajos no necesita tener un sistema de cola muy sofisticado. La ejecución de varios procesos de forma secuencial o en paralelo debe estar bien. Determinar cuánto tiempo de procesamiento recibió un proceso durante su vida útil (AFAIK, esto podría ser un desafío).

Todavía no encontré ningún software existente que haga esto, incluyendo http://java-source.net/open-source/job-schedulers . Sospecho que podría tener que construir una interfaz RPC (con autenticación, etc., por supuesto) en torno a un administrador de trabajos; Tal vez use algo como Apache Commons Exec. En ese caso, preferiría Java o Python para la parte del administrador de trabajos.

¡Me encantaría escuchar sugerencias para el escenario anterior o el anterior!


Sus preguntas no son muy claras.

  • Si solo desea una cola de trabajo, hay un millón de ellos (SQS, AMPQ, Redis, etc.)
  • Si desea un marco genérico para ejecutar trabajos y registrar resultados, consulte Rundeck
  • Si desea un control de trabajo ad-hoc, solo use tmux y tmux a través de scripts SSH y / o CGI.

Pero en realidad, no estoy seguro de que haya un componente ''genérico'' que haga exactamente lo que usted quiere. Simplemente encienda su marco favorito y lea sobre syscalls de su idioma favorito. Puede realizar cualquier operación (proceso de ejecución, proceso de señal para pausar / matar) desde cualquier idioma si aprende la filosofía de UNIX. Tal vez almacenar una base de datos de trabajos en ejecución, etc.