@Override
  public void fireEvent(@Nonnull final InstanceUsageEvent event) {

    if (log.isDebugEnabled()) {
      log.debug("Received instance usage event:" + event);
    }
    if (lastEvent.getInstanceId().equals("-1")) {
      queueEvent(event);
      lastEvent =
          new InstanceUsageEvent(
              event.getUuid(),
              event.getInstanceId(),
              event.getMetric(),
              event.getSequenceNum(),
              event.getDimension(),
              event.getValue(),
              event.getValueTimestamp());
    } else if (lastEvent.getInstanceId().equals(event.getInstanceId())
        && !lastEvent.getMetric().equals(event.getMetric())
        && !lastEvent.getDimension().equals(event.getDimension())
        && lastEvent.getValue() != event.getValue()) {
      queueEvent(event);
      lastEvent = new InstanceUsageEvent("-1", "-1", "-1", -1L, "-1", -1D, -1L);
    } else {
      log.debug(
          "Instance Usage Event : "
              + event.getInstanceId()
              + " : "
              + event.getValue()
              + "has already been record.");
    }

    if (checkEventQueue()) {
      flushEventQueue();
    }
  }