2015-01-16 2 views
0

AMQP 모듈을 사용하여 RabbitMQ에 연결합니다. 연결하고, 교환을 만들고, 대기열에 넣고, 교환에 메시지를 보내고 게시 할 수 있습니다. 메시지가 관리 콘솔에 게시되었는지 확인할 수 있습니다.node.js AMQP가 콜백을 반환하지 않습니다.

문제점 교환 게시 호출에 대한 콜백이 수신되지 않습니다. 이것은 내 코드입니다. 내가 사용하는 메시지를 보낼 필요가있을 때 (앱이 express.js의 인스턴스)

   app.rabbitMQConnection = amqp.createConnection({ host: 'myurl.com', login: 'login', password: 'pwd' }); 
       app.rabbitMQConnection.on('ready', function(){ 
        console.log("RabbitMQ server connected"); 
        app.rabbitMQConnection_e = app.rabbitMQConnection.exchange('my-exchange', { confirm: true, durable: true, autoDelete: false }, function (q) { 
         app.rabbitMQConnection_q_lisorders = app.rabbitMQConnection.queue('shoe-orders', {autoDelete: false, durable: true}, function (q) { 
          app.rabbitMQConnection_q_lisorders.bind(app.rabbitMQConnection_e, '#'); 
         }); 
        }); 
       }); 

다음 :

초기화

    app.rabbitMQConnection_e.publish('routingKey', { message: myMessage }, { deliveryMode: 2 }, function(transmissionFailed){ 
          if (transmissionFailed == true){ 
             console.log("message failed"); 
          }else{ 
             console.log("message sent"); 
          } 
        }); 

콜백 기능 (transmissionFailed를) 호출되지 않습니다. 도와주세요!

+0

IIRC. – SLaks

+0

@SLaks 교환을 위해 {confirm : true} 옵션을 설정했습니다. 잘못된 것이라면 알려주세요. – user3658423

답변

0

의사가 명확하지 않습니다. 우리가 그것을 사용할 때,

전화 : connection.exchange (이름, 옵션 = {}, openCallback)

그런 다음 콜백 메시지를 게시하는 데 사용되는 교환 개체가 있습니다.

귀하의 코드가 될 것이다 : 다음

app.rabbitMQConnection.exchange('my-exchange', { confirm: true, durable: true, autoDelete: false }, function (q) { 
    app.rabbitMQConnection_e = q; 
    ..... 
}); 

그리고 :

app.rabbitMQConnection_e.publish('routingKey', { message: myMessage }, { deliveryMode: 2 }, function(transmissionFailed){ 
         if (transmissionFailed == true){ 
            console.log("message failed"); 
         }else{ 
            console.log("message sent"); 
         } 
       }); 
0

콜백 교환이 확인 모드에있는 경우 불려가는 함수입니다, 전송 값이 true가됩니다 또는 거짓, 이것이 오류의 표시이므로 true, 오류가 발생했음을 의미하고 false는 게시가 성공했음을 의미합니다.

교환을 만들 때 확인 모드로 교환을 설정해야합니다. 교환에서 게시 확인을 사용하도록 설정 한 경우 node-amqp는 해당 콜백 만 호출합니다.

관련 문제