# kermit-service-observer

> Inter service event listener for kermit.

Latest version **0.1.1** (published 2016-07-07) · BSD-2-Clause license · 0 weekly downloads

## Install

```sh
npm install kermit-service-observer
pnpm add kermit-service-observer
yarn add kermit-service-observer
bun add kermit-service-observer
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.1 |
| Published | 2016-07-07 |
| First published | 2016-07-07 |
| Weekly downloads | 0 |
| License | BSD-2-Clause |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Alrik Zachert |
| Maintainers | a-z |
| Keywords | kermit, observer, event listener, events, microservice |

## Links

- npm: https://www.npmjs.com/package/kermit-service-observer
- Repository: https://gitlab.com/kermit-js/kermit-service-observer
- Homepage: https://gitlab.com/kermit-js/kermit-service-observer#README
- Issues: https://gitlab.com/kermit-js/kermit-service-observer/issues
- npm.io page: https://npm.io/package/kermit-service-observer

## Dependencies (1)

- [kermit](https://npm.io/package/kermit.md) 2.x

## Alternatives

- [async-exit-hook](https://npm.io/package/async-exit-hook.md) — 3.7M weekly downloads
- [evnty](https://npm.io/package/evnty.md) — 7.2K weekly downloads
- [eleventy-plugin-asciidoc](https://npm.io/package/eleventy-plugin-asciidoc.md) — 3.5K weekly downloads
- [@jswork/next-get2get](https://npm.io/package/@jswork/next-get2get.md) — 945 weekly downloads
- [@dashersw/axon](https://npm.io/package/@dashersw/axon.md) — 934 weekly downloads

## Recent versions

- 0.1.1 (latest) — 2016-07-07
- 0.1.0 — 2016-07-07

## README

[![Kermit Module](https://i.imgur.com/DY1puas.png)](https://www.npmjs.com/package/kermit)

# kermit-service-observer - 0.1.1

Inter service event listener for [kermit](https://www.npmjs.com/package/kermit).

## Install

`$ npm install --save kermit-service-observer`

## Include

Register the observer service in your application services config (eg. `config/application.config.js`).

```javascript
module.exports = {
  ...
  app: {
    services: {
      observer: 'kermit-service-observer/ObserverService'
      ...
    }
  }
  ...
}
```

## Use

A common use case is to execute an panic method in case of any application
service triggers an error, for example in case of a lost db connection etc.

To archive this register the listener in your application's pre launch phase:

```javascript
  // src/Application.js
  ...
  
  launch() {
    super.launch();
    
    let observer = this.getServiceManager().get('observer');
    
    // execute the callback in case of any service (referenced by its service-key)
    // triggers an "error" event.
    observer.awaitAny([
      'mongo-service', 'redis-service', 'rabbit-service'
    ], 'error', (err, observation) => {
        if (err) {
          // an error within the service observation occured.
          throw err;
        }
        
        // this is where your recovery code goes.
        
        console.error(
          'the service', observation.service,
          `triggered an ${observation.event} event, passing the following arguments:`,
          observation.args
        );
    });
    
    return this;
  }
  ...
  
```

The service observer is also handy to use for assure the readyness of your
asynchronous application services:

```javascript
  // src/Application.js
  ...
  
  launch() {
    super.launch();
    
    let observer = this.getServiceManager().get('observer');
    
    // execute the callback in case of all services (referenced by its service-keys)
    // have triggered an "ready" event.
    observer.awaitAll([
      'mongo-service', 'redis-service', 'rabbit-service'
    ], 'ready', (err, observations) => {
      if (err) {
        // an error within the service observation occured.
        throw err;
      }
      
      // this is where your on-all-services-ready-to-use code goes.
      console.info('All services are ready!');
    });
    
    return this;
  }
  ...
```

### LICENSE

The files in this archive are released under BSD-2-Clause license.
You can find a copy of this license in [LICENSE](https://gitlab.com/kermit-js/kermit-service-observer/raw/master/LICENSE).

---
_Source: https://npm.io/package/kermit-service-observer · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
