2011-01-28 16 views
5

Mi aplicación que se ejecuta en Windows Azure procesa las solicitudes entrantes de un usuario (que se colocan en una cola de Azure) y las asigna a personas del mundo real.Azure - tareas basadas en el tiempo de cola

La gente tiene una cierta cantidad de tiempo para manejar la solicitud. Si ninguna de las personas asignadas maneja la solicitud, necesito pasar a un nuevo grupo de personas. Básicamente, quiero poner en cola estas tareas en un momento determinado y luego manejarlas de nuevo. Si uno de los usuarios maneja la tarea, necesito quitarla para que el trabajador no la maneje nuevamente.

+0

esta pregunta es interesante. Estoy trabajando en un proyecto similar también. sigue buscando respuestas. – Raptor

Respuesta

3

Debe usar una tarea programada. Hay dos buenas bibliotecas que puede usar: Quartz.Net y Castle scheduler.

Con un scheduler, tal tarea se vuelve fácil. Acaba de crear un trabajo que se ejecuta cuando expira el tiempo de procesamiento. Allí verificará si hay solicitudes no procesadas y, si quedan, notifique al siguiente grupo de personas y configure otro inicio programado para que se active después de que expire el tiempo de procesamiento.

Deseo saber si necesita más información.

He utilizado Quartz.net en una webrole azul con éxito en una aplicación de producción.

+0

¿Cómo funciona esta escala? ¿Qué sucede si está ejecutando 10 roles web al mismo tiempo? ¿No crearía esto una duplicación masiva de trabajo? –

+0

Mark, este es un buen comentario. El programador se ejecutaría en cada instancia. Cuando se desencadena el trabajo programado, simplemente inserta un mensaje en la cola azul y lo deja a los roles de trabajador. Podría echar un vistazo para ver si ya existe el mismo mensaje. Pero aún existe la posibilidad de que haya múltiples mensajes iguales en la cola azul. Es por eso que siempre debe luchar por la idempotencia en su diseño -> en este caso, eso significa que su sistema es inmune al procesamiento del mensaje varias veces. – santiagoIT

+0

Algunas veces la idempotencia no es posible. En mi caso, necesito algo más resistente que esto. –

Cuestiones relacionadas