resilient-consul

0.1.7 • Public • Published

resilient-consul Build Status Resilient js-standard-style

resilient.js HTTP client middleware for Consul.

Via this middleware you can use Consul as compatible discovery server in Resilient HTTP clients. Works with Consul HTTP API v1 and resilient.js +0.3

Nameconsul
Typediscovery
Resilient+0.3
Environmentsnode.js / browsers

Installation

Node.js

npm install resilient-consul --save

Browser

Via Bower:

bower install resilient-consul --save

Via Component:

component install h2non/resilient-consul

Or loading the script directly:

<script src="//cdn.rawgit.com/h2non/resilient-consul/0.1.6/consul.js"></script>

Usage

var Resilient = require('resilient')
var consul = require('resilient-consul')
 
var client = Resilient()
 
client.use(consul({
  // App service name (required)
  service: 'web',
  // Service name for self discovery (optional)
  discoveryService: 'consul',
  // Use a custom datacenter (optional)
  datacenter: 'ams2',
  // Use a custom service tag (optional)
  tag: '1.0',
  // Consul servers pool
  servers: [
    'http://demo.consul.io',
    'http://demo.consul.io'
  ],
  // Use Consul's health check endpoint instead of the catalog
  // to retrieve only services with passing health checks (optional)
  onlyHealthy: false,
  // Use a custom mapping function (optional)
  mapServers: function (list) {
    // here you can filter/map the services retrieved from Consul
    // to a list of addresses according to custom logic (optional)
    return list.map(function (svc) { return svc.ServiceAddress + '/v1' })
  }
}))
 
// Test request
client.get('/', function (err, res) {
  console.log('Error:', err)
  console.log('Response:', res)
})

Browser usage

If you're running Resilient in the browser, you must enable CORS headers in Consul. To do that you can define additional response HTTP headers in the Consul config file:

"http_api_response_headers": {
  "Access-Control-Allow-Origin": "*"
}

Options

  • service string - Consul service. Required
  • servers array<string> - List of Consul servers URLs. Required
  • discoveryService string - Consul discovery service for self discovery (e.g: consul)
  • datacenter string - Custom datacenter to use. If not defined the default one will be used
  • tag string - Use a specific tag for the service
  • onlyHealthy boolean - Use Consul's health check endpoint instead of the catalog to retrieve only services with passing health checks. Default to false
  • protocol string - Transport URI protocol. Default to http
  • mapServers function - Custom function for creating the list of service addresses based on the Consul response

Additionally you can pass any of the supported Resilient discovery options via this middleware

License

MIT - Tomas Aparicio

Package Sidebar

Install

npm i resilient-consul

Weekly Downloads

654

Version

0.1.7

License

MIT

Last publish

Collaborators

  • h2non