List of usage examples for io.vertx.core.shareddata LocalMap put
V put(K key, V value);
From source file:examples.SharedDataExamples.java
License:Open Source License
public void example1(Vertx vertx) { SharedData sd = vertx.sharedData();/* w ww . j a v a 2 s . c o m*/ LocalMap<String, String> map1 = sd.getLocalMap("mymap1"); map1.put("foo", "bar"); // Strings are immutable so no need to copy LocalMap<String, Buffer> map2 = sd.getLocalMap("mymap2"); map2.put("eek", Buffer.buffer().appendInt(123)); // This buffer will be copied before adding to map // Then... in another part of your application: map1 = sd.getLocalMap("mymap1"); String val = map1.get("foo"); map2 = sd.getLocalMap("mymap2"); Buffer buff = map2.get("eek"); }
From source file:io.flowly.engine.verticles.Build.java
License:Open Source License
private Handler<Message<Object>> deployAppHandler() { return message -> { App app = App.toApp((JsonObject) message.body()); LocalMap<String, Boolean> deployedAppsMap = vertx.sharedData().getLocalMap(DEPLOYED_APPS_KEY); Boolean appExists = deployedAppsMap.get(app.getId()); if (appExists != null && appExists) { Failure failure = new Failure(4001, "App is already deployed: " + app.getId()); logger.error(failure.getError()); message.fail(failure.getCode(), failure.getMessage()); } else {/*from w ww . j a va 2s . c om*/ // Add the app to the local map. deployedAppsMap.put(app.getId(), true); String appFolder = app.getAppFolder(); String verticlesPath = PathUtils.createPath(appFolder, PathUtils.VERTICLES_FOLDER); vertx.executeBlocking(future -> { try { prepareVerticlesFolderBlocking(app, verticlesPath); // Parse flows. List<Flow> flows = parseFlowsBlocking(appFolder); // Build flows. buildFlowsBlocking(app, flows, future, deployedAppsMap); } catch (Exception ex) { Failure failure = new Failure(4002, "Unable to compile flow verticles for app: " + app.getId(), ex); logger.error(failure.getError(), failure.getCause()); future.fail(failure); } }, r -> { if (r.succeeded()) { message.reply(true); } else { message.fail(4002, r.cause().getMessage()); } }); } }; }
From source file:org.azrul.langmera.QLearningAnalytics.java
@Override public void learn(DecisionFeedback currentFeedback, Vertx vertx, Runnable responseAction) { LocalMap<String, DetailDecisionFeedback> decisionFeedbackMap = vertx.sharedData() .getLocalMap("DECISION_FEEDBACK"); LocalMap<String, DecisionRequest> decisionRequestMap = vertx.sharedData().getLocalMap("DECISION_REQUEST"); LocalMap<String, DecisionResponse> decisionResponseMap = vertx.sharedData() .getLocalMap("DECISION_RESPONSE"); LocalMap<String, Double> q = vertx.sharedData().getLocalMap("Q"); LocalMap<Long, String> trackers = vertx.sharedData().getLocalMap("FEEDBACK_TRACKER"); int feedbackCount = decisionFeedbackMap.size(); boolean skipLearning = false; if (decisionRequestMap.get(currentFeedback.getDecisionId()) == null) { skipLearning = true;/*from w ww . jav a 2s. c om*/ } if (decisionResponseMap.get(currentFeedback.getDecisionId()) == null) { skipLearning = true; } if (skipLearning == false) { String context = decisionRequestMap.get(currentFeedback.getDecisionId()).getContext(); String decision = decisionResponseMap.get(currentFeedback.getDecisionId()).getDecision(); DetailDecisionFeedback detailFB = new DetailDecisionFeedback(); detailFB.setFeedback(currentFeedback); detailFB.setContext(context); detailFB.setDecision(decision); decisionFeedbackMap.put(currentFeedback.getDecisionId(), detailFB); Long trackerKey = (new Date()).getTime(); trackers.put(trackerKey, currentFeedback.getDecisionId()); int feedbackCountByDecision = 0; List<Double> rewards = new ArrayList<>(); for (DetailDecisionFeedback fb : decisionFeedbackMap.values()) { if (context.equals(decisionFeedbackMap.get(fb.getFeedback().getDecisionId()).getContext()) && decision .equals(decisionFeedbackMap.get(fb.getFeedback().getDecisionId()).getDecision())) { feedbackCountByDecision++; rewards.add(fb.getFeedback().getScore()); } } Double w = 0.0; Double alpha = config.getProperty("alpha", Double.class); //if no step parameter is configured, calculate it if (alpha == null) { alpha = 1.0 / (feedbackCountByDecision); } //non-stationary q-learning int i = 0; for (Double ri : rewards) { i++; w = w + alpha * (Math.pow(1 - alpha, feedbackCountByDecision - i)) * ri; } Double newQ = w; //System.out.println(feedbackCount+" Q:["+context + ":" + decision+"]"+newQ); //save what we learn if (newQ.isInfinite() || newQ.isNaN()) { //skip } else { String key = context + ":" + decision; q.put(key, newQ); } //Limit the number of history taken into account - prevents memory leak if (feedbackCount > config.getProperty("maxHistoryRetained", Integer.class)) { Long tk = Collections.min(trackers.keySet()); String decisionIDWithMinTracker = trackers.get(tk); decisionFeedbackMap.remove(decisionIDWithMinTracker); trackers.remove(tk); } //clear cached req/resp once the feedback has come back decisionRequestMap.remove(currentFeedback.getDecisionId()); decisionResponseMap.remove(currentFeedback.getDecisionId()); //Get maxQ Double maxQ = Double.NEGATIVE_INFINITY; String decisionWithMaxQ = null; for (String contextDecision : q.keySet()) { if (q.get(contextDecision) > maxQ) { decisionWithMaxQ = contextDecision; maxQ = q.get(contextDecision); } } //keep traces if (Boolean.TRUE.equals(config.getProperty("collect.traces", Boolean.class))) { Date now = new Date(); for (String contextDecision : q.keySet()) { List<Double> qtrace = traces.get(contextDecision); if (qtrace == null) { qtrace = new ArrayList<Double>(); qtrace.add(q.get(contextDecision)); traces.put(contextDecision, qtrace); } else { qtrace.add(q.get(contextDecision)); } String[] c = contextDecision.split(":"); Trace trace = new Trace(currentFeedback.getDecisionId(), c[0], q.get(contextDecision), maxQ, now, c[1], currentFeedback.getScore()); vertx.eventBus().publish("SAVE_TRACE_TO_TRACE", SerializationUtils.serialize((Serializable) trace)); } } // //put in in-memory DB // // // String[] c = decisionWithMaxQ.split(":"); // if (InMemoryDB.store.get(0)==null){ // List<Object> imContext = new ArrayList<Object>(); // imContext.add(c[0]); // InMemoryDB.store.add(0,imContext); // }else{ // InMemoryDB.store.get(0).add(c[0]); // } // // if (InMemoryDB.store.get(1)==null){ // List<Object> imDecision = new ArrayList<Object>(); // imDecision.add(c[1]); // InMemoryDB.store.add(1,imDecision); // }else{ // InMemoryDB.store.get(1).add(c[1]); // } // // if (InMemoryDB.store.get(2)==null){ // List<Object> imMaxQ = new ArrayList<Object>(); // imMaxQ.add(maxQ); // InMemoryDB.store.add(2,imMaxQ); // }else{ // InMemoryDB.store.get(2).add(maxQ); // } // // if (InMemoryDB.store.get(3)==null){ // List<Object> imTime= new ArrayList<Object>(); // imTime.add(new Date()); // InMemoryDB.store.add(3,imTime); // }else{ // InMemoryDB.store.get(3).add(new Date()); // } responseAction.run(); if (Boolean.TRUE.equals(currentFeedback.getTerminal())) { long delta = (new Date()).getTime() - startTime; System.out.println("Time taken to process " + feedbackCount + " msgs:" + delta + " ms"); System.out.println("Time taken per msg: " + (delta / feedbackCount) + " ms"); System.out .println("Msgs per s: " + ((1000.0 * (double) feedbackCount) / ((double) delta)) + " msgs"); if (Boolean.TRUE.equals(config.getProperty("collect.traces", Boolean.class)) && Boolean.TRUE.equals(config.getProperty("display.desktop.chart", Boolean.class))) { final LineChart demo = new LineChart(chartDesc, traces); demo.pack(); demo.setVisible(true); } } } else { logger.log(Level.WARNING, "Attempt to learn from a feedback with no corresponding request/response"); responseAction.run(); } // //select qmovies,qsports,qconcerts from // (select t1.qvalue as qsports,t1.decisionid from trace t1 where t1.decision='SPORTS' order by t1.decisiontime) as A1 // join (select t2.qvalue as qmovies,t2.decisionid from trace t2 where t2.decision='MOVIES' order by t2.decisiontime) as A2 on A1.decisionid = A2.decisionid // join (select t3.qvalue as qconcerts,t3.decisionid from trace t3 where t3.decision='CONCERTS' order by t3.decisiontime) as A3 on A1.decisionid = A3.decisionid }
From source file:org.entcore.infra.Starter.java
License:Open Source License
@Override public void start() { try {//w ww. j a v a 2s. c o m super.start(); final LocalMap<Object, Object> serverMap = vertx.sharedData().getLocalMap("server"); serverMap.put("signKey", config.getString("key", "zbxgKWuzfxaYzbXcHnK3WnWK" + Math.random())); CookieHelper.getInstance().init((String) vertx.sharedData().getLocalMap("server").get("signKey"), log); JsonObject swift = config.getJsonObject("swift"); if (swift != null) { serverMap.put("swift", swift.encode()); } JsonObject emailConfig = config.getJsonObject("emailConfig"); if (emailConfig != null) { serverMap.put("emailConfig", emailConfig.encode()); } JsonObject filesystem = config.getJsonObject("file-system"); if (filesystem != null) { serverMap.put("file-system", filesystem.encode()); } JsonObject neo4jConfig = config.getJsonObject("neo4jConfig"); if (neo4jConfig != null) { serverMap.put("neo4jConfig", neo4jConfig.encode()); } final String csp = config.getString("content-security-policy"); if (isNotEmpty(csp)) { serverMap.put("contentSecurityPolicy", csp); } serverMap.put("gridfsAddress", config.getString("gridfs-address", "wse.gridfs.persistor")); //initModulesHelpers(node); /* sharedConf sub-object */ JsonObject sharedConf = config.getJsonObject("sharedConf", new JsonObject()); for (String field : sharedConf.fieldNames()) { serverMap.put(field, sharedConf.getValue(field)); } vertx.sharedData().getLocalMap("skins") .putAll(config.getJsonObject("skins", new JsonObject()).getMap()); final MessageConsumer<JsonObject> messageConsumer = vertx.eventBus() .localConsumer("app-registry.loaded"); messageConsumer.handler(message -> { // JsonSchemaValidator validator = JsonSchemaValidator.getInstance(); // validator.setEventBus(getEventBus(vertx)); // validator.setAddress(node + "json.schema.validator"); // validator.loadJsonSchema(getPathPrefix(config), vertx); registerGlobalWidgets( config.getString("widgets-path", config.getString("assets-path", ".") + "/assets/widgets")); loadInvalidEmails(); messageConsumer.unregister(); }); } catch (Exception ex) { log.error(ex.getMessage()); } JsonObject eventConfig = config.getJsonObject("eventConfig", new JsonObject()); EventStoreService eventStoreService = new MongoDbEventStore(); EventStoreController eventStoreController = new EventStoreController(eventConfig); eventStoreController.setEventStoreService(eventStoreService); addController(eventStoreController); addController(new MonitoringController()); addController(new EmbedController()); if (config.getBoolean("antivirus", false)) { ClamAvService antivirusService = new ClamAvService(); antivirusService.setVertx(vertx); antivirusService.setTimeline(new TimelineHelper(vertx, getEventBus(vertx), config)); antivirusService.setRender(new Renders(vertx, config)); antivirusService.init(); AntiVirusController antiVirusController = new AntiVirusController(); antiVirusController.setAntivirusService(antivirusService); addController(antiVirusController); vertx.deployVerticle(ExecCommandWorker.class.getName(), new DeploymentOptions().setWorker(true)); } }
From source file:org.jberet.vertx.rest.JBeretRouterConfig.java
License:Open Source License
private static void scheduleJob(final RoutingContext routingContext) { final String jobXmlName = routingContext.pathParam("jobXmlName"); final HttpServerRequest request = routingContext.request(); final String delayString = request.getParam("delay"); final long delay = delayString == null ? DEFAULT_SCHEDULE_DELAY : Long.parseLong(delayString); final String periodicString = request.getParam("periodic"); final boolean periodic = periodicString != null && Boolean.parseBoolean(periodicString); final Properties jobParams = getJobParameters(routingContext); final JobSchedule jobSchedule = new JobSchedule(); jobSchedule.setDelay(delay);//from w ww . j a v a 2 s . c o m jobSchedule.setJobName(jobXmlName); jobSchedule.setJobParameters(jobParams); final long delayMillis = delay * 60 * 1000; final long timerId; final Vertx vertx = routingContext.vertx(); if (!periodic) { timerId = vertx.setTimer(delayMillis, timerId1 -> { final JobExecutionEntity jobExecutionEntity = JobService.getInstance().start(jobXmlName, jobParams); setJobExecutionEntityHref(routingContext, jobExecutionEntity); jobSchedule.addJobExecutionIds(jobExecutionEntity.getExecutionId()); jobSchedule.setStatus(JobSchedule.Status.DONE); }); } else { timerId = vertx.setPeriodic(delayMillis, timerId1 -> { final JobExecutionEntity jobExecutionEntity = JobService.getInstance().start(jobXmlName, jobParams); setJobExecutionEntityHref(routingContext, jobExecutionEntity); jobSchedule.addJobExecutionIds(jobExecutionEntity.getExecutionId()); // since this is periodic timer, there may be more in the future // jobSchedule.setStatus(JobSchedule.Status.DONE); }); } jobSchedule.setId(timerId); final LocalMap<String, JobSchedule> timerLocalMap = getTimerLocalMap(vertx); timerLocalMap.put(String.valueOf(timerId), jobSchedule); final JsonObject jsonObject = JsonObject.mapFrom(jobSchedule); sendJsonResponse(routingContext, jsonObject.encodePrettily()); }
From source file:org.pac4j.vertx.cas.VertxLocalSharedDataLogoutHandler.java
License:Apache License
@Override protected void doRecordSession(String sessionId, String ticket) { final LocalMap<String, String> localMap = vertx.sharedData().getLocalMap(PAC4J_CAS_SHARED_DATA_KEY); localMap.put(ticket, sessionId); }