Actualmente tengo un contenedor de tomcat: se ejecuta el servlet para escuchar las solicitudes. Necesito que el resultado de una solicitud HTTP sea un envío a una cola de trabajos que luego se procesará de forma asíncrona. Quiero que cada "trabajo" se mantenga en una fila en un DB para el seguimiento y la recuperación en caso de error. He estado leyendo mucho. Aquí están mis opciones (nota que tengo que usar cosas de código abierto para todo).Procesamiento asíncrono en Java desde un servlet
1) JMS - utilizar ActiveMQ (pero ¿quién es el consumidor de que el trabajo en este caso otro servlet)
2) que mi petición se crea una fila en la base de datos?. Tener un servlet independiente dentro de mi contenedor de Tomcat que siempre se ejecuta; utiliza Quartz Scheduler o las utilidades provistas en java.util.concurrent para procesar continuamente las filas como trabajos (usa la agrupación de subprocesos).
Me inclino por este último porque mirar la documentación JMS me da un dolor de cabeza y, aunque sé que es una solución más robusta, necesito implementar esto relativamente rápido. No estoy anticipando grandes cantidades de carga en los primeros días de implementación de este servidor en cualquier caso.
Mucha gente dice que Spring podría ser bueno para 1 o 2. Sin embargo, nunca he usado Spring y ni siquiera sabría cómo empezar a usarlo para resolver este problema. Cualquier sugerencia sobre cómo bucear sin tener que volver a escribir todo mi proyecto sería útil.
De lo contrario, si pudiera pesar en la opción 1 o 2 también sería útil.
Aclaración: El proceso asíncrono sería rozar una pantalla de un sitio web de terceros y enviar una notificación de mensaje al solicitante original. El sitio web de terceros es un poco inestable y lento y por eso se manejará como un proceso asíncrono (varios intentos de reintento integrados). También extraeré archivos de ese sitio y los almacenaré en S3.
también recomiendo tanto para la primavera de cuarzo programación y mensajería JMS. Hará que el código sea mucho más simple. – kgiannakakis