import { IReferenceable, IReferences, Context } from "pip-services4-components-node";
import { CompositeCounters } from "pip-services4-observability-node";
import { MessageEnvelope } from "pip-services4-messaging-node"

class MyComponent implements IReferenceable {
    private _counters: CompositeCounters = new CompositeCounters();
  
    public setReferences(refs: IReferences) {
      this._counters.setReferences(refs);
    }
  
    public onMessage(message: MessageEnvelope) {
      let timing = this._counters.beginTiming("mycomponent:msg_time");
      try {
        this._counters.increment("mycomponent:msg_count", 1);
        ...
      } catch (ex) {
        this._counters.increment("mycomponent:msg_errors", 1);
      } finally {
        timing.endTiming();
      }
    }
  }