Tuer nestjs - processus node.js lors de la perte de connexion Redis (microservice)


Sel
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

Kim Kern

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);
}

Articles connexes


Perte de connexion à MySQL lors de la connexion via SSL

Jasper Sardonicus J'essaie de me connecter à une instance Cloud SQL exécutant MySQL à l'aide de SSL et de Flask-SQLAlchemy. Voici les étapes que j'ai suivies : J'ai pu ouvrir une connexion à l' 127.0.0.1:3306aide du proxy d'authentification Cloud SQL sans prob

erreur lors de la connexion de mongodb à node.js

AnonymeRoi J'obtiens une erreur en essayant de connecter Mongodb et Nodejs sur un serveur local, s'il vous plaît, aidez-moi avec ce problème mon code JavaScript const mongodb = require("mongodb"); //provide the function sto connect to database const MongoClie

Node.js: tuer les sous-processus de ChildProcess # spawn

vtambourin Considérez le code suivant: import {spawn, exec} from 'child_process'; var child = spawn('su', [process.env.USER, '-c', 'while (true); do sleep 0.3; echo "tick"; done'], {stdio: ['ignore', 'pipe', 'pipe']} ); child.stdout.pipe(process.std

Comment tuer correctement un processus Go de Node

Sébastien : Je veux créer une tâche Grunt qui génère un serveur Go, puis le tue et le réapparaît lorsque les fichiers source Go changent. Je crée le processus Go comme ceci: goProcess = child_process.exec('go run main.go', ... Plus tard, j'essaye de tuer le p

Tuer le processus enfant à la fin de la promesse

user4209821 J'utilise le code suivant pour créer un processus enfant, le processus fonctionne comme prévu, ce que je veux faire maintenant, c'est à la fin du processus de le tuer, j'essaye avec le dernier alors (qui si je mets BP il s'arrête là après le proces