UNPKG

brake-client

Version:
96 lines (68 loc) 2.28 kB
# cloud-client ## Usage ### ResourceClient ``` javascript 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 ``` javascript 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](https://github.com/node-cloud/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](https://github.com/node-cloud/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](https://github.com/node-cloud/brakes). ### brake.fallback(callback) * fallback: (optional) the global fallback function.