Vertx: использование абстрактного контекста для обхода объектов

Мы использовали объект 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 ответ

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

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

Другие вопросы по тегам