Tuer nestjs - processus node.js lors de la perte de connexion Redis (microservice)
app.connectMicroservice({
transport: Transport.REDIS,
options: {
url: redis://ip:6379,
retryAttempts: 5,
retryDelay: 5000,
}
});
C'est ainsi que je me connecte au microservice dans nestjs, simple et basique sous Windows.
Pendant le processus, la connexion à redis pourrait avoir disparu, mais je ne peux pas l'attraper.
Cela signifie que l'application sera toujours active et que rien ne se passera si la connexion redis est rétablie, je ne pourrai pas m'abonner à de nouveaux événements.
Comment puis-je le gérer ou ajouter un délai d'expiration ou attraper un problème comme celui-ci. Le correctif pour l'instant consiste à redémarrer le service uniquement manuellement. Je veux tuer le processus avec exit(1)
dans ce cas
Vous pouvez émettre périodiquement des messages de vérification de l'état, puis démarrer votre processus de récupération lorsque la connexion est fermée:
Enregistrez votre client redis dans les importations de votre module:
imports: [ClientsModule.register([
{ name: 'REDIS_CLIENT', transport: Transport.REDIS },
])],
Ensuite, dans votre onModuleInit , connectez votre client et démarrez périodiquement la vérification de l'état:
constructor(@Inject('REDIS_CLIENT') private readonly client: ClientProxy) {
}
async onModuleInit() {
await this.client.connect();
setInterval(async () => {
try {
await this.client.emit('healthcheck', 'healthcheck').toPromise();
} catch (e) {
// Sending the message has failed, start recovery
console.error(e);
process.exit(1);
}
}, 1000);
}