Una de las mejores cosas del marco de juego es que es totalmente sin estado y solo está orientado a la solicitud/respuesta. Esto es realmente bueno ya que me permite implementar mi aplicación en la nube y escalar el número de instancias de reproducción detrás de mi balanceador de carga sin tener que preocuparme por la replicación de estado (sesión) ...Marco de juego: impacto de los trabajos en el modelo sin estado
Recientemente, sin embargo, necesitaba ejecute alguna lógica de aplicación fuera de una solicitud HTTP y descubra que Play tiene la posibilidad de definir trabajos que están totalmente gestionados por el marco. Suena genial, pero plantea la pregunta: ¿cómo encajan estos trabajos en el modelo sin estado que usa Play?
Supongamos que tengo una tarea de mantenimiento que debe ejecutarse cada hora y defino un trabajo programado para eso. Si luego despliego varias instancias de Play detrás de un equilibrador de carga, ¿ese trabajo se iniciará al mismo tiempo en cada instancia? Y si es así, ¿cuál sería un buen enfoque para manejar trabajos que deben ejecutarse "exclusivamente"?
Estaba pensando en crear una nueva instancia de reproducción en un servidor no agrupado, reutilizando el modelo JPA de la instancia existente (en clúster) (y, por lo tanto, conectando a la misma base de datos). Esta nueva instancia contendría solo los trabajos de mantenimiento y, dado que está alojada en un servidor no agrupado, no existe el riesgo de que un trabajo se ejecute simultáneamente. Al mismo tiempo, esto me permitiría mantener mi instancia agrupada existente completamente apátrida y fácil de mantener/equilibrar de carga. ¿Sería este un buen enfoque?
Comenzando una recompensa, consulte a continuación. – ripper234