vizz.microservice-client

1.6.2 • Public • Published

register-microservice-client

Library to register/unregister microservice in the api-gateway. This library implement the /info endpoint that the api-gateway uses to obtain info of the registered microservices. IMPORTANT Now only support koajs 1.x framework. Soon, we support expressjs, etc.

Install

npm install --save vizz.microservice-client

Use in microservice

In listen callback of koajs app add the next code:

    var promise = require('register-microservice-client').register({
        id: config.get('service.id'),
        name: config.get('service.name'),
        dirConfig: path.join(__dirname, '../microservice'),
        dirPackage: path.join(__dirname, '../../'),
        logger: logger,
        app: app //koa app object,
        callbackUpdate: <function> // this callback is called when the api-gateway call to info endpoint. Is called with the new token and api-gateway url (same object that getInfo() returns)
    });
    p.then(function() {}, function(err) {
        logger.error(err);
        process.exit(1);
    });

This code, call to register library with the config of the microservice. All config is required. Is necesary defined 1 environment variables when you are developing in develop environment. This variables are:

API Reference

register([opts]) => Return Promise Object

Register /info endpoint and in local environment, it make a request to /refresh endpoint in api-gateway to the api-gateway refresh his configuration.

// Config the microservice client to listen /info endpoint in this microservice.
    var p = require('vizz.microservice-client').register({
        id: config.get('service.id'),
        name: config.get('service.name'),
        dirConfig: path.join(__dirname, '../microservice'),
        dirPackage: path.join(__dirname, '../../'),
        logger: logger,
        app: app
    });
    p.then(function() {}, function(err) {
        logger.error(err);
        process.exit(1);
    });
Param Type Description
[opts] Object
[opts.id] String (required) Id of the service. Is used to replace in register.json
[opts.name] String (required) Name of the service. Is used to replace in register.json
[opts.dirConfig] String (required) Folder dir where it is the config of the microservice (public-swagger.yml, swagger.yml and register.json)
[opts.dirPackage] String (required) Folder dir where it is the package.json file
[opts.logger] Object Object to show logs. If you don't give, library use console.log
[opts.app] Object (required) Koa app object. Is used to register /info endpoint

requestToMicroservice([opts]) => Return result of request.

Method to call to other microservices registered in the same api-gateway. Is a generator function. Add to opts, the token of authentication with the api-gateway. Use co-request library. Example:

let result = yield require('vizz.microservice-client').requestToMicroservice({
            uri: '/geostore/' + hashGeoStore,
            method: 'GET',
            json: true
        });
Param Type Description
[opts] Request config Object

setDataConnection([opts])

Method to manually config the authentication token and api-gateway url. Example:

let result = yield require('vizz.microservice-client').setDataConnection({
            apiGatewayUrl:'http://192.168.1.10:5000',
            authenticationToken: 'a245614bca9...'
        });
Param Type Description
[opts] Object
[opts.apiGatewayUrl] String Url of api-gateway
[opts.authenticationToken] String Authentication token

getInfo() => Return result of request.

Return api-gateway url and token obtained when api-gateway call to /info endpoint. Example:

let result = yield require('vizz.microservice-client').getInfo();
Result Type Description
[result] Object
[result.apiGatewayUrl] String Url of api-gateway
[result.authenticationToken] String Authentication token

TODO:

  • Add support to express framework

Package Sidebar

Install

npm i vizz.microservice-client

Weekly Downloads

0

Version

1.6.2

License

MIT

Last publish

Collaborators

  • andres.gonzalez
  • davidsingal
  • mbarrenechea
  • clementprdhomme
  • tiagojsag
  • d4weed
  • hotzevzl