seneca-servicebus-transport
Version:
Azure Servicebus transport plugin for seneca.js
49 lines (42 loc) • 1.34 kB
JavaScript
/**
* @module lib/client
*/
const Promise = require('bluebird')
const Client = require('./client-factory')
const amqputil = require('./client-util')
const Policy = require('amqp10').Policy
const debug = require('debug')('seneca-servicebus-transport')
module.exports = {
setup
}
function createQueue (client, service, options) {
var qres = options.queues.response
var queueName = amqputil.resolveClientQueue(qres)
return new Promise((resolve, reject) => {
service.createQueueIfNotExists(queueName, function (err, created, response) {
if (err) {
return reject(err)
}
client.createReceiver(queueName, Policy.ServiceBusQueue)
.then((receiver) => {
return resolve({
queue: queueName,
receiver: receiver
})
})
})
})
}
function createActor (seneca, { client, queue, receiver, options }, done) {
var transportClient = Client(seneca, { client, queue, receiver, options })
return Promise.resolve(transportClient.start(done))
.thenReturn(transportClient)
}
function setup (seneca, { client, service, options }, done) {
debug('Setup client')
return createQueue(client, service, options)
.then(function ({queue, receiver}) {
return createActor(seneca, { client, queue, receiver, options }, done)
})
}