2010-09-17 13 views

Respuesta

5

Sí, que va a trabajar. En una aplicación web en la que trabajé, necesitaba enviar un correo electrónico de notificación dependiendo de la acción del usuario. Agregué un interceptor post-commit en el servicio, y eliminé ese mensaje del correo electrónico en un hilo separado. (En mi caso, resultó ser más limpio que poner el código en el controlador, porque solo quería que ocurriera si se comprometía la transacción).

Necesita asegurarse de que el hilo realmente deja de funcionar en algún momento, ya sea configurando daemon en verdadero (si está bien que detener el servidor mata el hilo sin previo aviso) o asegurándose de que el código en su método de ejecución siempre terminará en algún momento.

Le conviene más usar un subproceso que crear subprocesos nuevos, por lo que no se arriesga a agotarse los recursos (los subprocesos no suelen ser eventos independientes, si un subproceso se cuelga el siguiente probablemente también lo hará) para reducir sus pérdidas). Los métodos anotados con @Async se ejecutarán utilizando un ejecutor que puede configurar como se muestra en the Spring documentation.

+0

Quizás sea bueno mencionar que el Controlador no puede notificar al usuario cuando falla el envío de un correo electrónico (a menos que use Callable.get(), que de alguna manera derrota el propósito de otro hilo). – extraneon

+0

Si quiero usar un grupo de subprocesos, ¿cómo puedo lograr que solo haya un subproceso de subprocesos utilizado para todos los usuarios/solicitudes en el servidor? Editar: ¿Esto se puede hacer mediante el alcance del bean de subprocesos a "singleton"? – Erik

4

Sí, puede iniciar un nuevo hilo en el controlador. Pero una mejor forma de hacer un trabajo asíncrono es usar soporte de programación de primavera. Puede aprovechar el marco de Quartz. Eso administrará tu trabajo.

Este link le dará la forma de integrar esto en su aplicación.

+1

¿Puedes ver un poco sobre por qué usar el programa de primavera/Quartz es mejor que comenzar un nuevo Thread en este caso? – Valera

Cuestiones relacionadas