Skip to content

seif/hapi-service-discovery

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#Hapi-service-discovery Build Status NPM version Dependencies

Hapi Plugin for opentable-flavoured service-discovery

Connects the discovery client, exposes routes for announce, unannounce (so that you can control the server externally), and wraps the logging to server.log

Currently depends on some closed-source modules which we are in the process of open-sourcing

Usage:


var server = hapi.createServer();

server.pack.register({
  plugin: require('hapi-service-discovery'),
  options: {
    host: 'my-discovery-server.com',
    serviceType: 'my-service',
    serviceUri: 'http://my-service.domain.com', // Defaults to the machine's FQDN,
    discoveryRoutesAuth: false, // optional, default behaviour is to inherit the route default, can either be false (to disable auth) or the name of an auth strategy (to override the route default).
    metadata: { // metadata is optional
      domain: 'com'
    },
    onError: function(err) {
      // optional error handler
      // when set, forces initialisation to continue when any runtime errors are encountered
    },
    gracefulShutdown: true, // uses hapi-shutdown to unannounce gracefully on SIGTERM (defaults to false)
    waitOnShutdown: 20 * 1000 // time to wait after unannounce (defaults to 30 seconds)
});

server.start(function(){
  server.log(["info"], "server started...");

  server.plugins['hapi-service-discovery'].announce(function(err){
      if(err){
        throw err;
      }

      server.log(["info"], "announced");
    })
});

The plugin exposes the following methods from the ot-discovery module:


- announce(callback)
- unannounce(lease, callback)
- find(serviceType | predicate )
- findAll(serviceType | predicate)

Routes:


GET /discovery/announce    - announce this server to the registry
GET /discovery/unannounce  - unannounce this server
GET /discovery/lease       - show lease info
GET /discovery/lastUpdated - show last time the client received an update from the remote discovery service (useful for monitoring)

Logging: Will log using 'plugin.log()' and the tag "discovery"

About

shared plugin for hapi to use ot-discovery

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%