Miss any of our Open RFC calls?Watch the recordings here! »

handy-ms-broker-nats

0.0.5 • Public • Published

handy-ms-broker-nats

handy-ms-broker-nats registers all async function of a class and then be callable by the other microservice.

How it works?

Lets say you have a SampleController class from one of your microservice, and you want it to be callable on the other node.js microservice.

// sample_ctl.js
 
class SampleController {
  async foo (params) {
    return Promise.resolve({ action: 'foo', params })
  }
 
  async bar (params) {
    return Promise.resolve({ action: 'bar', params })
  }
 
  async sampleerr () {
    return Promise.reject(new Error('Sample Err'))
  }
}
 

All you have to do is connect to your NATS, pass it to handy-ms-broker-nats instance, then register your SampleController

// ms-app-1/index.js (aka subscriber)
 
const NATS = require('nats')
const Broker = require('handy-ms-broker-nats')
 
const nats = NATS.connect()
const broker = new Broker(nats)
 
broker.register('resource', new SampleController())

Then, it is now callable by the other end.

// ms-app-2/index.js (aka publisher)
 
const NATS = require('nats')
const Broker = require('handy-ms-broker-nats')
 
const nats = NATS.connect()
const broker = new Broker(nats)
 
broker.call('resource.foo', { hey: 'ho!' })
  .then(ret => {
    console.log(ret) // { action: 'foo', params: { hey: 'ho!' } }
  })
  .catch(err => {
    if (/Sample Err$/.test(err.message)) {
      // catching our defined err
    } else {
      throw err // if isn't ours
    }
  })

In Constructor Registration

class Foo {
  constructor (broker) {
    this.broker = broker
 
    this.broker.register('myService', this)
  }
 
  async foo (params) {
    return Promise.resolve({ action: 'foo', params })
  }
 
  async sampleCall (params) {
    return this.broker.call('otherService', params)
  }
}
 
const NATS = require('nats')
const Broker = require('handy-ms-broker-nats')
 
const nats = NATS.connect()
const broker = new Broker(nats)
 
const foo = new Foo(broker)
 
foo.sampleCall(params)
  .then(ret => console.log(ret))
  .catch(err => console.log(err))
 

Install

npm i handy-ms-broker-nats

DownloadsWeekly Downloads

0

Version

0.0.5

License

MIT

Unpacked Size

11.4 kB

Total Files

8

Last publish

Collaborators

  • avatar