class QueueClient implements RequestQueue {

    @Override
    public void lockedEnqueue(HttpRequest queuedRequest, String queue, String lockRequestedBy, Handler<Void> doneHandler) {
        vertx.eventBus().send(getRedisquesAddress(), buildLockedEnqueueOperation(queue,
                queuedRequest.toJsonObject().put(QUEUE_TIMESTAMP, System.currentTimeMillis()).encode(), lockRequestedBy),
                (Handler<AsyncResult<Message<JsonObject>>>) event -> {
                    if (OK.equals(event.result().body().getString(STATUS))) {
                        monitoringHandler.updateLastUsedQueueSizeInformation(queue);
                        monitoringHandler.updateEnqueue();
                    }
                    // call the done handler to tell,
                    // that the request was written
                    if (doneHandler != null) {
                        doneHandler.handle(null);
                    }
                });
    }

    public  QueueClient(Vertx vertx, MonitoringHandler monitoringHandler);

}