2012-03-30 8 views
3

Zur Zeit verwende ich https://github.com/mranney/node_redis als mein Knoten Redis Client.Knoten JS Redis Client Verbindung wiederholen

client.retry_delay ist auf 250ms voreingestellt.

Ich versuchte die Verbindung zu redis und sobald die Verbindung erfolgreich war, stoppte ich manuell den Redis-Server, um zu sehen, ob client.retry_delay funktioniert. Aber ich habe es nicht funktionieren sehen.

Die folgenden Protokollmeldungen auf ready & end Ereignisse auf redisClients angemeldet verwenden erstellt create

[2012-03-30 15:13:05.498] [INFO] Development - Node Application is running on port 8090 
[2012-03-30 15:13:08.507] [INFO] Development - Connection Successfully Established to '127.0.0.1' '6379' 
[2012-03-30 15:16:33.886] [FATAL] Development - Connection Terminated to '127.0.0.1' '6379' 

ich nicht wieder Erfolgsmeldung nicht sehen [bereit Ereignis wurde nicht gefeuert], wenn der Server wieder Live

kam

Fehle ich etwas? Wann wird die Wiederholungskonstante verwendet? Gibt es eine Arbeit zu finden, ob ein Redis-Server nach einem Ausfall von Knoten aufgetreten ist?

Antwort

9

Ich kann das nicht reproduzieren. Könnten Sie diesen Code versuchen, Ihren Redis-Server stoppen und die Protokollausgabe prüfen?

var client = require('redis').createClient(); 

client.on('connect'  , log('connect')); 
client.on('ready'  , log('ready')); 
client.on('reconnecting', log('reconnecting')); 
client.on('error'  , log('error')); 
client.on('end'   , log('end')); 

function log(type) { 
    return function() { 
     console.log(type, arguments); 
    } 
} 
+0

Ich fand das Problem, ich war nicht Fehlerereignis behandeln. Jetzt funktioniert es wie ein Zauber. Danke für den Code :) – Tamil

-3

Hinzufügen zu der Antwort oben. Kleine Veränderung. Der bereitgestellte Callback sollte ein Methodenname sein und die Methode selbst nicht ausführen. Etwas wie unten:

function redisCallbackHandler(message){ 
    console.log("Redis:"+ message); 
} 

var redis = require("redis"); 
var redisclient = redis.createClient(); 
redisclient.on('connect', redisCallbackHandler); 
redisclient.on('ready', redisCallbackHandler); 
redisclient.on('reconnecting', redisCallbackHandler); 
redisclient.on('error', redisCallbackHandler); 
redisclient.on('end', redisCallbackHandler); 
+0

Überprüfen Sie die Log-Funktion oben .. Es hat Funktion als Rückgabewert .. Die als Callback-Referenz verwendet wird – Tamil

Verwandte Themen