Event Logger Microservice
Questo microservizio si occupa di registrare tutti gli eventi che sono stati triggerati all'interno di una coda di messaggi creata tramite l'utilizzo della libreria BullMQ che sfrutta redis. Questi eventi vengono poi salvati in un database
Logica

-
1.0 Viene effettuata una richiesta a un servizio
-
2 Il servizio produce un evento e lo invia in coda:
- 2.0: Il servizio risponde
- 2.1: Il servizio produce un evento inviandolo in coda su Redis
-
3 Il microservizio riceve l'evento
-
4 Il microservizio salva l'evento nel database
Questo permette quindi una gestione del salvataggio degli eventi totalmente asincrona
Setup
Per poter utlizzare il microservizio è necessario eseguire una configurazione del microservizioe e una in ogni servizio che produce un evento
Configurazione del microservizio
- Installare i pacchetti necessari per il funzionamento del microservizio
pnpm install- Creare un file
.envcon le seguenti variabili d'ambiente
La sezione relativa a redis è costante (ovvero rimane sempre uguale a prescindere dal tipo di database che viene utilizzato nello stack), quella relativa al database varia in base al database scelto, in questo caso è stato utilizzato MongoDB
# Database
MONGODB_URI="XXXXXXXXX"
# Redis
REDIS_HOST="localhost"
REDIS_PORT="6379"- Modificare il file
lib/logger.config.tsche è così strutturato:
import Event from "./database/event";
// QueueEvent è il tipo dell'evento, modificalo in base a quello che ti serve. Potrai utilizzare questo tipo senza doverlo importare in tutti i file all'interno del progetto (a patto che il file si trovi all'interno della cartella lib)
declare global {
type QueueEvent = any;
}
// LoggerConfiguration è la configurazione del logger, all'interno puoi trovare il nome della coda di messaggi e la funzione che salva l'evento nel database
export const configuration: LoggerConfiguration = {
queueName: "events",
saver: async (event) => {
await new Event({
name: event.name,
...event.data,
timestamp: new Date(event.data.timestamp),
}).save();
},
};- Eseguire il microservizio
pnpm startConfigurazione del servizio che produce gli eventi
- Installare BullMQ
pnpm install bullmq-
copia il contenuto di questo file (opens in a new tab) all'interno del tuo progetto All'interno troverai 2 funzioni che ti permetteranno di registrare un evento e di inviarlo in coda La prima funzione è
emitEventMiddlewareche è un middleware che viene utilizzato per registrare un evento. La seconda funzione èemitEventche viene utilizzata per inviare l'evento in codaLeggi qui (opens in a new tab) la documentazione