2013-08-01 5 views
1

처리 도메인에 connect-domain을 사용하려고했습니다. 대부분의 경우에는 문제가 없지만 redis 콜백으로는 실패합니다. 이 문제를 해결하는 방법?오류 처리기 Nodej Redis Connect-domain fail

여기에 모든 모듈은 최신이다, 나는 nodejs 0.8.16을 사용

var http = require('http'); 
var express = require('express'); 
var connectDomain = require('connect-domain'); 
var redis = require("redis").createClient(); 

var app = express(); 
app.use(connectDomain()); 

app.get('/', function (req, res) { 
    throw new Error("Handler OK"); 
}); 

app.get('/error', function (req, res) { 
    redis.get("akey", function(err, reply) { 
     throw new Error("Handler error"); 
     res.end("ok"); 
    }); 
}); 

app.use(function (err, req, res, next) { 
    res.end(err.message); 
}); 

http.createServer(app).listen(8989, function() { 
    console.log("Express server started "); 
}); 

내 응용 프로그램의

답변

6

도메인가 잡기 여부를해야하는지 확실하지 -하지만 당신은 설정하여 레디 스 오류를 캡처 할 수 있습니다 다음과 같은 오류 처리기 :

// handle redis connection temporarily going down without app crashing 
redisClient.on("error", function(err) { 
    console.error("Error connecting to redis", err); 
}); 

연결이 끊긴 동안에도 처리기는 redis가 다시 연결하려고 시도 할 때 계속 호출됩니다. 결국 성공한다면 모든 것이 온라인으로 다시 돌아올 것입니다.

+0

물론 프로덕션 용도로는 문제가 해결되어야합니다. 이 문제 때문에 시스템을 프로덕션 모드에서 종료하지 않도록 예외를 잡으려고 많은 노력을 기울였습니다. – teddy