Monitoreo de componentes de Software
Como parte del módulo de reportes se está utilizando una cola de mensajería implementada en RabbitMQ, la cuál es consumida por una instancia Worker que procesa los reportes de manera asíncrona. Este Worker actúa como subscriber de la cola de mensajería, y debido a que su implementación está en una instancia externa, reduce el procesamiento de la aplicación Web principal.
Disponibilidad
Para el escenario de disponibilidad, se propone la implementación de un failover, en caso de que la cola de mensajería principal sufra alguna caída. Para este caso se propone utilizar otra cola de mensajería sustituta, cuya implementación se encuentra dentro del contexto de la aplicación Web, y que puede responder a las solicitudes de generación de reportes, en tanto la cola principal en RabbitMQ se recupera.
Para lograr esto de plantea la implementación de un componente encargado de realizar el monitoreo al estado de la conexión con la cola principal, para en caso de que esta conexión sufra alguna caída, la aplicación se autoconfigure y proceda a enviar los mensajes a la cola local.
Estado de la aplicación
En caso de fallo de la cola principal, y en casos en los que hubiesen reportes encolados que no hubieran podido ser procesados, se almacenará en caché el estado de la cola. En caso de fallo, el componente que actúa como monitor, procede a recuperar los mensajes que no pudieron ser procesados y los envía de nuevo a la nueva cola para su correcto procesamiento.