2014-01-10 4 views
2

(node-amqp 및 rabbitmq 서버를 사용 중입니다.)node-amqp에 문제가 생길 때 "닫기"이벤트가 발생하는 이유는 무엇입니까?

뭔가 잘못되면 close 이벤트가 발생하는 이유를 추측하려고합니다. 예를 들어, 잘못된 매개 변수와 함께 큐에 대한 연결을 열려고하면 오류 이벤트가 발생합니다. 완벽하다는 걸 알았어.

그러나 오류가 발생하면 닫기 연결도 받게됩니다 (이 경우 대기열에 실패한 소켓을 닫았 기 때문일 수 있습니다). 그리고 나서 자동으로 다시 연결하면 (초기) 준비 이벤트가 수신됩니다.

문제 : 뭔가 잘못

connection.on('ready', function() { 
do_a_lot_of_things 

}).on(error, function(error){ 
solve_the_problem 
}); 

경우, 나는 오류가 나타납니다,하지만 "준비"이벤트를 그리고 do_a_lot_of_things을 다시 것입니다. 내 접근 방식이 잘못 되었나요?

안부

+0

나는 그 이유는 당신이 큐를 (잘못된 구성) rabbitmq이 emmit 및 오류를 만들고 그 후 연결을 닫습니다 만들려고 생각합니다. 그런 다음 node-amqp가 다시 연결되도록합니다 (그런 식으로 구성된 경우). 연결 성공 준비 이벤트가 다시 발생하면 do_a_lot_of_things이 다시 완료됩니다. – jgato

답변

2

당신이 사용할 수있는 첫 번째 이벤트 핸들러를 실행합니다 connection.once('ready', function() { … }) (the documentation 참조).

+0

현재 문제를 해결하는 데는 문제가 없습니다. 하지만, 왜 내가 가까운/준비의 순서를 받고 있습니까? 예를 들어, 토끼 서버가 고장 났을 때 "준비"이벤트를 다시받을 때를 알고 싶습니다. 따라서, 나는 그것에 반응 할 수 있었다. – jgato

+0

(node-ampq 모듈에 익숙하지 않습니다.) '.on ('ready')'와 함께 두 번째 리스너를 추가하여 해당 이벤트에 반응 할 수도 있습니다. –