node.js的rabbitmqsubscriber客户端(实现主题(ExcahangeName))



我正在尝试编写一个node.js客户端(订阅者模块)来使用来自rabbitmq(AMQP)的消息。我正在尝试在rabbitmq中实现主题(exchangeName)。

我正在尝试使用(easy-amqp)或postwait来完成此任务。

我已经用java编写了一个publisher方法,并想用javascript(node.js)编写一个subscriber方法

我的java程序运行良好,我可以向rabbitmq发送消息。

我想我把订阅者的方法搞砸了。当我运行subscriber方法时,它不会给我任何错误,也不会向控制台打印任何消息。

我的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中的Subscriber方法(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的图书馆。我试了一下

//订户使用简单的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);
      });
  });
});

这也没有给我想要的结果。

您检查控制台日志了吗?先检查一下。

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);
      });
  });
});

相关内容

  • 没有找到相关文章

最新更新