私は、rabbitmq(AMQP) からのメッセージを消費する node.js クライアント (サブスクライバー モジュール) を作成しようとしています。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) //using (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);
});
});
});
これも私に望ましい結果を与えません。