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
Name | consul |
Type | discovery |
Resilient | +0.3 |
Environments | node.js / browsers |
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": "*"
}
- 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 tofalse
- protocol
string
- Transport URI protocol. Default tohttp
- 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
MIT - Tomas Aparicio