JMS - Temperatura y Humedad
JMS - Temperatura y Humedad es una aplicación web para visualizar en tiempo real la temperatura y la humedad captadas por sensores, empleando Java Message Service (JMS). Gracias a su interfaz intuitiva y gráficos dinámicos, permite monitorizar los datos de forma continua y eficiente.
Detalles de la aplicación
El servidor se desarrolló con Spring Boot, utilizando Apache ActiveMQ como broker de mensajería y PostgreSQL como sistema de persistencia. El cliente está construido en Next.js y Tailwind CSS para un diseño moderno y responsivo. Los sensores, implementados en Java, envían tramas JSON a través de JMS y el servidor retransmite los datos al cliente mediante WebSockets. Toda la solución está dockerizada y orquestada con Docker Compose, lo que facilita su despliegue en cualquier entorno.
Funcionalidades
- Gráficos de línea en tiempo real para la temperatura de cada sensor.
- Gráficos de línea en tiempo real para la humedad de cada sensor.
- Actualización automática vía WebSockets.
Desarrollado en colaboración con Steven Mateo.
Tecnologías utilizadas
Backend
Frontend
Contenedores
Desarrollo de la práctica
La solución consta de tres componentes:
Simulador de Endpoints (Java + JMS)
- Genera dos hilos que envían cada minuto un JSON con la estructura:
{ "fechaGeneración": "DD/MM/YYYY HH:mm:ss", "IdDispositivo": <Int>, "temperatura": <Number>, "humedad": <Number> }
- Publica cada mensaje en la cola
notificacion_sensores
mediante el estándar JMS (OpenWire bajo ActiveMQ).
- Genera dos hilos que envían cada minuto un JSON con la estructura:
Servidor Spring Boot
- Se subscribe a
notificacion_sensores
, persiste cada trama en PostgreSQL y, a través de WebSockets, retransmite los datos al cliente web.
- Se subscribe a
Cliente Web (Next.js + TailwindCSS)
- Abre una conexión WebSocket para recibir lecturas en tiempo real.
- Dibuja dos gráficos de línea: temperatura vs. tiempo y humedad vs. tiempo para cada sensor.
Despliegue: todo se orquesta con Docker Compose, levantando contenedor de ActiveMQ, servicio Spring Boot, base de datos y frontend.
Repositorio de GitHub
::github{repo=“/nightmareVCO/advanced-web/tree/main/practica-5}