brake-client

0.1.3 • Public • Published

cloud-client

Usage

ResourceClient

import BrakeClient from 'brake-client';
import rp from 'request-promise';

const SERVICE_NAME = 'a-service';
const brake = new BrakeClient(SERVICE_NAME);

//set health check.
brake.healthCheck(() => {
  return rp({
      method: 'get',
      url: `/${SERVICE_NAME}/health`,
      headers: {
          'Content-Type': 'application/json'
      }
  });
});

brake.on('circuitOpen', () => {
    logger.warn(`The service: ${SERVICE_NAME}'s circuit is opened.`);
});

brake.on('circuitClosed', () => {
    logger.info(`The service: ${SERVICE_NAME}'s circuit is closed.`);
});

brake.fallback(err => {
    throw new Error('Cannot invoke downstream service. please try again soon.', err);
});

export function getResource(id) {
    const request = {
        method: 'get',
        url: `/${SERVICE_NAME}/v1/resources/:id`,
        params: {id: id},
        headers: {
            'Content-Type': 'application/json'
        }
    };
    return brake.circuit({send: rp}).send(request);
}

You can use brake client to invoke resource api. The example is

import resourceClient from './ResourceClient';

resourceClient.getResource(id).then(resource => {
    console.log(resource);
})

API

new BrakeClient(serviceName, options)

serviceName

The service name.

options

The options param is the same as brakes. We extend it, and support request handlers

  • options.handler.preHandle(request)
  • options.handler.postHandle(err, response)
  • options.handler.postCircuit(response);

brake.healthCheck(callback)

Set a callback, when the circuit is open, the callback will be used for checking the service's health status, if the status is ok, the circuit will close.

brake.on(eventName, callback)

See brakes for detail.

brake.isOpen()

Return the circuit's status.

brake.circuit(client, fallback, options) : {send(request)}

  • client: (required) an object implement send function.
  • fallback: (optional) fallback function.
  • options (optional) the same as brakes.

brake.fallback(callback)

  • fallback: (optional) the global fallback function.

Package Sidebar

Install

npm i brake-client

Weekly Downloads

1

Version

0.1.3

License

MIT

Last publish

Collaborators

  • zfeng