Alpura Back Java Lib Statistics V.1.3
Librería común para implementar estadisticas en microservicios Java desarrollados con Spring Boot. Automatiza el registro de eventos críticos y métricas para KPIS, integrándose con Pub/Sub y ejecutándose de forma asíncrona.
📦 Requisitos
- Java JDK: 21 (Temurin LTS)
- Spring Boot: 3.4.4 o superior
- Base de datos: PostgreSQL
- Gestor de dependencias: Maven o Gradle
⚙️ Instalación
Maven
<dependency>
<groupId>com.alpura</groupId>
<artifactId>back-java-lib-common-statistics</artifactId>
<version>1.3</version>
</dependency>
Gradle
implementation 'com.alpura:back-java-lib-common-statistics:1.4'
🛠️ Configuración
- statistic.config.logStatistic: Se puede configurar si se deben registrar en archivos de log (logStatistics).
Esta configuración debe realizarse en el archivo application.yml de tu servicio. Aquí un ejemplo de cómo quedaría:
yaml
statistic.config:
logStatistic: true # Habilita logging por consola
🧭 Configuración del Escaneo de Componentes
Para que la librería de estadísticas funcione correctamente, es necesario escanear los paquetes donde se encuentran los componentes, anotaciones y aspectos.
Asegúrate de incluir los siguientes paquetes en la anotación @ComponentScan de tu clase principal (@SpringBootApplication):
@ComponentScan({
"com.alpura.statistics.*",
"com.alpura.queue.*"
})
🧩 Uso de la Anotación @IStatistics
Las estadísticas se activa automáticamente al utilizar la anotación @IStatistics.
Según la arquitectura establecida, todo método anotado debe cumplir con los siguientes requisitos:
- Recibir un parámetro de entrada de tipo
RequestVO<?> - Retornar un objeto de tipo
SingleResponseVO<?>oResponseVO<?>
** Puedes consultar estos objetos RequestVO<?>, SingleResponseVO<?> y ResponseVO<?>, en la librería alpura-back-java-lib-common-utilities
@IStatistics
public SingleResponseVO<String> myMethod(RequestVO<String> request) {
// lógica del método
}
Una vez que el método se ejecuta:
- Si la ejecución es exitosa, los datos se envían al tópico dev.estadistics, el cual trabajará junto con el servicio de estadísticas para persistirlo en una base de datos.
🧾 Estructura de Datos
📄 Entidad: StatisticsLog
CREATE TABLE public.statistics_log (
id int8 GENERATED BY DEFAULT AS IDENTITY( INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 CACHE 1 NO CYCLE) NOT NULL,
dx_statistics_log_json jsonb NULL,
CONSTRAINT statistics_log_pkey PRIMARY KEY (id)
);
JSON
{
"userId": "string", // ID del usuario que inició la acción
"appSource": "string", // Aplicacion de la cual se extraen las estadíticas
"requestVO": {}, // Objeto con los datos de entrada de la solicitud
"timestamp": "datetime", // Fecha y hora en que ocurrió el evento
"userEmail": "string", // Email del usuario que ejectua el metodo
"deviceType": "string", // Tipo de dispositivo que consulta el metodo: web, mobile, desconocido
"httpMethod": "string", // Verbo del metodo http: GET, POST, PUT, DELETE
"methodName": "string", // Nombre del metodo
"responseVO": {}, // Objeto con la respuesta del proceso
"elapsedTime": 1, // Tiempo transcurrido para completar la operación (en milisegundos)
"methodReference": "string" // Referencia del metodo ejecutado
}
🔧 Compilación del Proyecto
- Clona el repositorio desde GitLab:
git clone "url"
cd "local"
mvn clean install
Salida esperada:
[INFO] BUILD SUCCESS
⚡ Características
✅ Registro automático de:
Parámetros de entrada
Salida del método
Tiempos de ejecución
Fecha/hora
Identificadores de cliente
🧱 Manejo de errores integrado
🧵 Ejecución asincrónica (multihilo)
⚙️ Configuración simple por YAML
💾 Persistencia en PostgreSQL
📌 Notas Finales
- El sistema de logging y persistencia puede activarse o desactivarse mediante configuración.
- Se requiere la instalación de la librería Pub/Sub para el envío de las estadísticas de logs.