Skip to main content

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<?> o ResponseVO<?>

** 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

  1. 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.