我正在尝试编写一个node.js客户端(订阅者模块)来使用来自rabbitmq(AMQP)的消息。 我正在尝试在rabbitmq中实现主题(exchangeName)。
我正在尝试使用(easy-amqp)或postwait来执行此任务。
我在java中编写了一个发布者方法,并希望在javascript(node.js)中编写一个订阅者方法。
我的java程序运行正常我可以发送消息给rabbitmq。
我认为我搞砸了订阅者方法。当我运行订阅者方法时,它不会给我任何错误,也不会向控制台打印任何消息。
我的java方法有点像
//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 + "'");
// js中的订阅者方法(node.js) //使用(postwait- node-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 :(得分: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);
});
});
});