Estoy teniendo dificultades para descubrir cómo diseñar la última pieza de mi sistema. Actualmente estoy ejecutando un servidor Tomcat que tiene un servlet que responde a las solicitudes de los clientes. Cada solicitud, a su vez, agrega un mensaje de procesamiento a una cola asíncrona (probablemente utilizaré JMS a través de Spring o, más probablemente, Amazon SQS).¿Cuál es la mejor forma de procesar continuamente una cola asíncrona en Java?
La secuencia de eventos es la siguiente:
lado de envío:
1. Tome una petición de cliente
2. Agregue un poco de datos en una base de datos relacionados con esta solicitud con un identificador único
3. Añada objeto de mensaje que representa esta solicitud a la cola de mensajes
Recepción de lado:
1. Tire un nuevo objeto de mensaje de la cola
2. Separar el objeto y grab cierta información de un sitio web basada en información contenida en el objeto msg.
3. Enviar una alerta de correo electrónico
4. actualizar mi fila de base de datos (misma ID única) con la información de que la operación se completó para esta solicitud.
Estoy teniendo dificultades para encontrar la forma correcta de tratar con el lado receptor. Por un lado, probablemente pueda crear un programa Java simple que inicie desde la línea de comandos que selecciona cada elemento en la cola y lo procesa. ¿Eso es seguro? ¿Tiene más sentido tener ese programa ejecutándose como otro hilo dentro del contenedor de Tomcat? No querré hacer esto en serie, lo que significa que el receptor debe ser capaz de procesar varios objetos a la vez, utilizando múltiples hilos. Quiero que esto siempre esté en funcionamiento, las 24 horas del día.
¿Cuáles son algunas opciones para construir el lado de recepción?
En caso de que alguien esté interesado en lo que finalmente terminé haciendo. Utilicé SQS de Amazon y tengo un cliente de Java (utiliza el marco de Spring) que sondea la cola. Cuando encuentra un mensaje lo procesa y vuelve al estado de espera. Podría agregar el enhebrado Quartz, por ahora solo comienzo varios procesos. – Ish
Me enfrento a un problema similar. Me gustaría saber cómo se implementó Java Client. Espero que no se ejecute en un bucle while infinito y conserve el mensaje? –