class QueueClient implements RequestQueue {

    @Override
    public Future<Void> enqueueFuture(HttpRequest queuedRequest, String queue) {
        Future<Void> future = Future.future();
        vertx.eventBus().send(getRedisquesAddress(), buildEnqueueOperation(queue,
                queuedRequest.toJsonObject().put(QUEUE_TIMESTAMP, System.currentTimeMillis()).encode()),
                (Handler<AsyncResult<Message<JsonObject>>>) event -> {
                    if (OK.equals(event.result().body().getString(STATUS))) {
                        monitoringHandler.updateLastUsedQueueSizeInformation(queue);
                        monitoringHandler.updateEnqueue();
                        future.complete();
                    } else {
                        future.fail(event.result().body().getString(MESSAGE));
                    }
                });
        return future;
    }

    public  QueueClient(Vertx vertx, MonitoringHandler monitoringHandler);

}