Vertx: использование абстрактного контекста для обхода объектов - PullRequest
0 голосов
/ 24 января 2019

Мы использовали объект Context в длинной цепочке асинхронного выполнения.

Например:

private void checkVehicle(final JsonObject cmd,
                              final RedisFleetStorage storage,
                              final Handler<AsyncResult<String>> handler) {

        // omitted for brevity

        // some async call to another verticle
        storage.getVehicle(fleetId, vehicleId, result -> {
            if (!result.succeeded()) {
                LOG.error(String.format("Impossible to get vehicleStatus %s:%s", fleetId, vehicleId), result.cause());
                handler.handle(Future.failedFuture("KO");
                return;
            }

            // put vehicle in context for later use
            final Vehicle vehicle = result.result();
            LOG.info("vehicle details {}", vehicle);
            context.put("vehicle", vehicle);

            handler.handle(Future.succeededFuture());
        });
    }

Как видно выше, мы помещаем объект (транспортное средство) в контекст, а затем получаем доступ позже при выполнении.

Но мы подозреваем, что объект транспортного средства изменен другим исполнением.Является ли это возможным?Может ли другой цикл обработки событий изменить объект в контексте?

1 Ответ

0 голосов
/ 24 января 2019

Экземпляр verticle обрабатывает все запросы с одним и тем же циклом событий.

Вот почему объект Context не подходит для хранения данных, специфичных для запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...