@hapiness/consul
v1.0.2
Published
Hapiness module for consul
Downloads
4
Maintainers
Readme
Consul Module
Consul
module for the Hapiness framework.
To get started with consul, you can begin with having a look at the consul official documentation
Table of contents
- Using your module inside Hapiness application
- Using
Consul
inside your hapiness application - Contributing
- Maintainers
- License
Using your module inside Hapiness application
yarn
or npm
it in your package.json
$ npm install --save @hapiness/core @hapiness/consul rxjs
or
$ yarn add @hapiness/core @hapiness/consul rxjs
"dependencies": {
"@hapiness/consul": "^1.0.0",
"@hapiness/core": "^1.5.1",
"rxjs": "^5.5.7",
//...
}
//...
Using Consul
inside your hapiness application
Import the module
You need to include ConsulModule
in the imports
section of your module definition.
@HapinessModule(
{
version: '1.0.0',
declarations: [/* your declarations */],
providers: [/* your providers */],
exports: [/* your exports */],
imports: [ConsulModule /* other modules */]
}
)
export class MyModule { /* ... */ }
Bootstrap the extension
You need to inject the extension in bootstrap using setConfig to instantiate the module.
The config properties allowed for the extensions are defined like this:
export interface HapinessConsulClientOptions {
scheme?: string;
host?: string;
port?: string;
defaults?: {
consistent?: boolean;
dc?: string;
stale?: boolean;
token?: string;
wait?: string;
wan?: boolean;
ctx?: NodeJS.EventEmitter;
timeout?: number;
};
ca?: string;
baseUrl?: string;
}
Then just do like this:
Hapiness
.bootstrap(
MyModule,
[
ConsulExt.setConfig({
/* Put your config here */
})
])
.catch(err => done(err));
Use the exposed service
This library is in fact a wrapper of the famous consul node library but wrap all its functions to returns rxjs Observable
You can see the doc by clicking here
We provide a wrapper called ConsulService
exposing a client
getter that will allow you to access the consul client.
class FooProvider {
constructor(private _consul: ConsulService) {}
bar(): Observable<string> {
// Getting a key from the KV client of consul
return this._consul.client.kv.get('hello');
}
acquireLock(): void {
// Create a consul lock
const lock = this._consul.client.lock({ key: 'test' });
// Listen to lock events
lock.on('acquire', () => {
console.log('lock acquired'));
lock.release();
});
lock.on('release', () => console.log('lock released'));
lock.on('error', () => console.log('lock error:', err));
lock.on('end', (err) => console.log('lock released or there was a permanent failure'));
// Acquire the lock
lock.acquire();
}
}
Contributing
To set up your development environment:
- clone the repo to your workspace,
- in the shell
cd
to the main folder, - hit
npm or yarn install
, - run
npm or yarn run test
.- It will lint the code and execute all tests.
- The test coverage report can be viewed from
./coverage/lcov-report/index.html
.
Maintainers
License
Copyright (c) 2018 Hapiness Licensed under the MIT license.