Pregunta

Tengo una aplicación ASP.Net que necesita tiene que tener algún trabajo realizado por otra máquina. Para ello estoy dejando un mensaje en la cola visible para ambas máquinas. Cuando el trabajo se hace se deja un mensaje en la segunda cola.

Necesito la aplicación ASP.Net para comprobar la segunda cola periódicamente para ver si alguna de las tareas se han completado.

¿Dónde está el mejor lugar para que un bucle de este tipo? Global.asax?

Recuerdo que en alguna parte que se puede obtener una función llamada después de un intervalo de lectura. ¿Sería adecuado?

¿Fue útil?

Solución

Para realizar tareas periódicas en asp.net, he encontrado dos enfoques aceptables:

  1. generará un subproceso durante Application_Start en Global.asax, en un bucle while (1) hacer el trabajo (2) del sueño de la rosca para un intervalo.
  2. Una vez más en Application_Start, insertar un elemento ficticio en caché de asp.net, expira en un cierto intervalo y dar ese elemento de la caché una devolución de llamada a ser llamado cuando está caducado. En ese devolución de llamada, puede hacer el trabajo e insertar el elemento de la caché de vuelta de la misma manera.

En ambos casos, es necesario asegurarse de que el hilo sigue funcionando incluso si no ocurre un error. Usted puede colocar un código de restauración en SessionStart y BeginRequest para comprobar su hilo o elemento de la caché está ahí, y renovarlo si algo ha sucedido a él.

Otros consejos

Asumo que esto se hace sobre una base regular, y que algún otro proceso pone los artículos en la cola?

Si ese es el caso, es posible poner algo en Global.asax que al iniciar la aplicación crea un hilo separado que simplemente supervisa la cola, se puede utilizar un temporizador para que ese sueño hilo de X segundos, a continuación, comprobar los resultados.

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