Git Product home page Git Product logo

resilient-consul's Introduction

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

resilient-consul's People

Contributors

ahelmberger avatar h2non avatar ismriv avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.