我们一直在使用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());
});
}
如上所述,我们将一个对象(车辆)放在上下文中,然后在执行后访问。
但是我们怀疑车辆对象被另一次执行改变了。可能吗?另一个事件循环可以更改上下文中的对象吗?
答案 0 :(得分:2)
一个verticle实例处理具有相同事件循环的所有请求。
这就是Context
对象不适合存储请求特定数据的原因。