ksiomelo
ksiomelo

Reputation: 1908

How to keep a queue active after a request is made in node.js amqp?

Do I really need to instantiate the queue "queue = connection.queue(...)" every time I want to use it?

Server (node.js):

 queue = connection.queue('incoming', { // <--- DO I REALLY NEED THAT FOR EVERY REQUEST?
        durable : true,
        exclusive : false }, function() {});

 queue.subscribe(function(msg) {
      // Unsubcribe here. Maybe there is something like a once listener?
     console.log("RECEIVED: "+msg)
      //res.send(msg.data);
      queue.unsubscribe(ctag);
     res.redirect('/home');

   }).addCallback(function(ok) { ctag = ok.consumerTag; });

   exchange.publish('msg_queue', 'functional!', {  // request
      replyTo: 'incoming'
   }); 

If queue = connection.queue(...); is instantiated with the server, the first request using the queue is successful, but the followings requests throw an error:

Error: NOT_FOUND - no queue 'incoming' in vhost '/'
at Queue._onMethod (/Users/cassiomelo/code/cubix/cubix_nodejs/node_modules/amqp/amqp.js:1720:15)

Upvotes: 0

Views: 951

Answers (1)

kmpm
kmpm

Reputation: 495

For an rpc example ,that keeps the reply queue hanging around, please have a look at How to create REP/REQ on Rabbit.js

Upvotes: 1

Related Questions