2013-07-31 64 views
1

我正在嘗試編寫一個node.js客戶端(訂戶模塊)來使用rabbitmq(AMQP)的消息。 我想在rabbitmq中實現主題(exchangeName)。rabbitmq的node.js訂閱者客戶端(實現主題(ExcahangeName))

我正在嘗試爲此任務使用(easy-amqp)或postwait。

我已經在java中編寫了發佈者方法,並且想要在javascript(node.js)中編寫訂閱者方法。

我的java程序工作正常我能夠發送消息給rabbitmq。

我想我已經搞亂了用戶方法。當我運行訂閱者方法時,它不會給我任何錯誤,也不會將任何消息打印到控制檯。

我的Java方法是在JS(node.js中)有點象

//Publisher (written in java) 

Connection connection = null; 
Channel channel = null; 
String routingKey =null; 

ConnectionFactory factory = new ConnectionFactory(); 
factory.setHost("localhost"); 

connection = factory.newConnection(); 
channel = connection.createChannel(); 

//publishing to a exchange_name topic 

channel.exchangeDeclare(EXCHANGE_NAME, "topic"); 

//set the routing key 

routingKey = "anonymous.info" ; 

channel.basicPublish(EXCHANGE_NAME, routingKey, null, message.getBytes()); 
System.out.println("Sent '" + routingKey + "':'" + message + "'"); 

//訂戶方法 //使用(postwait-節點AMQP)

var amqp = require('amqp'); 

var connection = amqp.createConnection({defaultExchangeName: "topic"}); 

// Wait for connection to become established. 
    connection.on('ready', function() { 

    connection.queue('anonymous.info', function(q){ 
     // Catch all messages 
     q.bind('#'); 

     // Receive messages 
     q.subscribe(function (message) { 
     // Print messages to stdout 
     console.log(message); 
     }); 
    }); 
}); 

這不會給我任何錯誤,但它甚至不會將任何消息打印到控制檯。


那麼我又遇到了另一個名爲easy-amqp的庫。我試了一下

//使用easy-amqp的用戶。

var easyamqp = require('easy-amqp'); 

var connection = easyamqp.createConnection("amqp://localhost:5672"); 



// setting the exchange 
connection.exchange('topic') 

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

    connection.queue('anonymous.info', function(q){ 

     q.bind('#'); 

     // Receive messages 
     q.subscribe(function (message) { 
     // Print messages to stdout 
     console.log(message); 
     }); 
    }); 
}); 

這也不能給我想要的結果。

回答

0

您是否檢查控制檯日誌?先檢查一下。

connection.on('ready', function() { 
    **console.log('ready function called!');** 

    connection.queue('anonymous.info', function(q){ 
     // Catch all messages 
     q.bind('#'); 

     // Receive messages 
     q.subscribe(function (message) { 
     // Print messages to stdout 
     console.log(message); 
     }); 
    }); 
});