Resilient.js middleware to use Consul for service discovery and balancing
MIT License
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
npm install resilient-consul --save
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>
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)
})
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": "*"
}
string
- Consul service. Requiredarray<string>
- List of Consul servers URLs. Requiredstring
- Consul discovery service for self discovery (e.g: consul)string
- Custom datacenter to use. If not defined the default one will be usedstring
- Use a specific tag for the serviceboolean
- Use Consul's health check endpoint instead of the catalog to retrieve only services with passing health checks. Default to false
string
- Transport URI protocol. Default to http
function
- Custom function for creating the list of service addresses based on the Consul responseAdditionally you can pass any of the supported Resilient discovery options via this middleware
MIT - Tomas Aparicio