coworkers icon indicating copy to clipboard operation
coworkers copied to clipboard

Channel locked when using RPC

Open ajudi opened this issue 6 years ago • 0 comments

I get the following error when trying to use the RPC implementation in coworkers:

Error: Channel closed by server: 405 (RESOURCE-LOCKED) with message "RESOURCE_LOCKED - cannot obtain exclusive access to locked queue 'amq.gen-_G_bE-7udUZ7m6c9seUx0A' in vhost '/'"
    at Channel.C.accept (/home/tom/Programming/AuthServer/node_modules/amqplib/lib/channel.js:406:17)
    at Connection.mainAccept [as accept] (/home/tom/Programming/AuthServer/node_modules/amqplib/lib/connection.js:64:33)
    at Socket.go (/home/tom/Programming/AuthServer/node_modules/amqplib/lib/connection.js:477:48)
    at emitNone (events.js:106:13)
    at Socket.emit (events.js:208:7)
    at emitReadable_ (_stream_readable.js:513:10)
    at emitReadable (_stream_readable.js:507:7)
    at addChunk (_stream_readable.js:274:7)
    at readableAddChunk (_stream_readable.js:250:11)
    at Socket.Readable.push (_stream_readable.js:208:10)
    at TCP.onread (net.js:594:20)
coworkers up and consuming messages
/home/tom/Programming/AuthServer/node_modules/throw-next-tick/index.js:3
    throw err;

This is my server side code:

const coworkers = require('coworkers');
const db = require('./model/database');
const {getBearerToken} = require('./auth/oAuth2');

const app = coworkers();
app.prefetch(100);
app.queue('bearer-token-request', function * (){
    this.ack = true
    const exists = yield this.checkReplyQueue();
    if (!exists){
        this.nack
        return 
    }
    const content = this.message.content;
    console.log(content);
    this.reply(new Buffer('this is the reply'))
    this.ack = true
});

app.on('error', (err)=>{
    console.log(err.stack)
});

db.connect((err)=>{
    if(err){
        console.log('Unable to connect to the database.');
        process.exit(1);
    } else {
        app.connect((err)=>{
            if (err) return console.log(err)
            console.log('coworkers up and consuming messages')
        });
    }
});

and I'm just testing it with the following in a node terminal:

var amqplib = require('amqplib')
var request = require('amqplib-rpc').request

amqplib.connect().then(function (connection) {
  return request(connection, 'bearer-token-request', { a: 10, b: 20 }).then(function (replyMessage) {
    console.log('res',replyMessage.content.toString()) // 200
  })
}).catch((err)=>{console.log('err',err)})

ajudi avatar Nov 24 '17 14:11 ajudi