Vertx:使用AbstractVerticle上下文传递对象

时间:2019-01-24 10:13:24

标签: vert.x event-loop

我们一直在使用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 :(得分:2)

一个verticle实例处理具有相同事件循环的所有请求。

这就是Context对象不适合存储请求特定数据的原因。