Pregunta

Quiero crear una aplicación de Azure que tenga dos funciones de trabajo y NO funciones web. Cuando los roles de los trabajadores se inician por primera vez, SOLO SOLO UNO de los roles hará lo siguiente una vez:

  • Descargue y analice un archivo maestro y luego ponga en cola a varios " hijo " tareas basadas en la contenido del archivo maestro
  • Encolar una única descarga de archivo maestro " hijo " tarea para ejecutar el siguiente día

Cada uno de los " hijo " Luego, ambos trabajadores realizarían las tareas hasta que se agotara la cola de tareas. Piense en todas las cosas como " cebando la bomba "

Este tipo de cosas es realmente fácil si agrego el primer " maestro " tarea manualmente en una cola llamando a un rol web, pero parece ser muy difícil de hacer en un modo de inicio automático.

Cualquier ayuda en este sentido sería muy apreciada!

Gracias .....

¿Fue útil?

Solución

Una posibilidad: en lugar de llamar a una función web, simplemente cargue la cola directamente. (Parece que este es el tipo de aplicación que querrás girar automáticamente para hacer algún trabajo y luego volver a cerrarla ... si lo estás automatizando, sería trivial automatizar también la carga de la cola). / p>

Una (quizás) mejor opción: use algún tipo de mecanismo de bloqueo para asegurarse de que solo una instancia de trabajador haga el trabajo de inicialización. Una forma de hacer esto es intentar crear la cola (o un blob, o una entidad en una tabla). Si ya existe, entonces la otra instancia está manejando la inicialización. Si la creación se realiza correctamente, es el trabajo de esta instancia.

Tenga en cuenta que siempre es mejor usar un contrato de arrendamiento que un bloqueo, en caso de que la instancia que está haciendo la inicialización falle. Considere usar un tiempo de espera (por ejemplo, almacenar una marca de tiempo en el almacenamiento de la tabla o en los metadatos del blob o en el nombre de la cola ...).

Otros consejos

Terminamos con el mismo tipo de problema, por eso presentamos un O / C mapper (objeto a la nube). Básicamente, desea introducir dos tipos de servicios en la nube:

  1. QueueService que consume mensajes cuando están disponibles.
  2. ScheduledService que activa las operaciones de forma programada.

Luego, como otros sugirieron, en la nube, realmente prefiere usar arrendamientos en lugar de bloqueos, para evitar que su aplicación en la nube termine congelada para siempre debido a un hardware temporal (o infraestructura). ) problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top