diff --git a/backend/vertx/src/main/java/net/miarma/contaminus/clase/BroadcastVerticle.java b/backend/vertx/src/main/java/net/miarma/contaminus/clase/BroadcastVerticle.java new file mode 100644 index 0000000..4faccb2 --- /dev/null +++ b/backend/vertx/src/main/java/net/miarma/contaminus/clase/BroadcastVerticle.java @@ -0,0 +1,18 @@ +package net.miarma.contaminus.clase; + +import io.vertx.core.AbstractVerticle; +import io.vertx.core.Promise; + +public class BroadcastVerticle extends AbstractVerticle { + @Override + public void start(Promise promise) { + vertx.setPeriodic(2000, _a -> { + vertx.eventBus().publish("broadcast.addr", "Ola"); + }); + try { + promise.complete(); + } catch (Exception e) { + promise.fail(e); + } + } +} diff --git a/backend/vertx/src/main/java/net/miarma/contaminus/clase/ConsumerVerticle1.java b/backend/vertx/src/main/java/net/miarma/contaminus/clase/ConsumerVerticle1.java new file mode 100644 index 0000000..23cf86f --- /dev/null +++ b/backend/vertx/src/main/java/net/miarma/contaminus/clase/ConsumerVerticle1.java @@ -0,0 +1,23 @@ +package net.miarma.contaminus.clase; + +import io.vertx.core.AbstractVerticle; +import io.vertx.core.Promise; +import io.vertx.core.eventbus.Message; +import net.miarma.contaminus.common.Constants; + +public class ConsumerVerticle1 extends AbstractVerticle { + @Override + public void start(Promise promise) { + vertx.eventBus().consumer("broadcast.addr", this::handleMsg); + try { + promise.complete(); + } catch (Exception e) { + promise.fail(e); + } + } + + private void handleMsg(Message msg) { + Constants.LOGGER.info("Ola Broadcast soy Consumer1"); + } + +} diff --git a/backend/vertx/src/main/java/net/miarma/contaminus/clase/ConsumerVerticle2.java b/backend/vertx/src/main/java/net/miarma/contaminus/clase/ConsumerVerticle2.java new file mode 100644 index 0000000..3bb2938 --- /dev/null +++ b/backend/vertx/src/main/java/net/miarma/contaminus/clase/ConsumerVerticle2.java @@ -0,0 +1,23 @@ +package net.miarma.contaminus.clase; + +import io.vertx.core.AbstractVerticle; +import io.vertx.core.Promise; +import io.vertx.core.eventbus.Message; +import net.miarma.contaminus.common.Constants; + +public class ConsumerVerticle2 extends AbstractVerticle { + @Override + public void start(Promise promise) { + vertx.eventBus().consumer("broadcast.addr", this::handleMsg); + try { + promise.complete(); + } catch (Exception e) { + promise.fail(e); + } + } + + private void handleMsg(Message msg) { + Constants.LOGGER.info("Ola Broadcast soy Consumer2"); + } + +} diff --git a/backend/vertx/src/main/java/net/miarma/contaminus/clase/MainVerticleClase.java b/backend/vertx/src/main/java/net/miarma/contaminus/clase/MainVerticleClase.java new file mode 100644 index 0000000..b83d2d8 --- /dev/null +++ b/backend/vertx/src/main/java/net/miarma/contaminus/clase/MainVerticleClase.java @@ -0,0 +1,32 @@ +package net.miarma.contaminus.clase; + +import io.vertx.core.AbstractVerticle; +import io.vertx.core.Promise; +import net.miarma.contaminus.common.Constants; + +public class MainVerticleClase extends AbstractVerticle { + @Override + public void start(Promise promise) { + vertx.deployVerticle(new BroadcastVerticle(), result -> { + if(result.succeeded()) { + Constants.LOGGER.info("📡 BroadcastVerticle desplegado"); + } else { + Constants.LOGGER.error("❌ Error al desplegar BroadcastVerticle", result.cause()); + } + }); + vertx.deployVerticle(new ConsumerVerticle1(), result -> { + if(result.succeeded()) { + Constants.LOGGER.info("📡 ConsumerVerticle1 desplegado"); + } else { + Constants.LOGGER.error("❌ Error al desplegar ConsumerVerticle1", result.cause()); + } + }); + vertx.deployVerticle(new ConsumerVerticle2(), result -> { + if(result.succeeded()) { + Constants.LOGGER.info("📡 ConsumerVerticle2 desplegado"); + } else { + Constants.LOGGER.error("❌ Error al desplegar ConsumerVerticle2", result.cause()); + } + }); + } +} diff --git a/backend/vertx/src/main/java/net/miarma/contaminus/server/ApiVerticle.java b/backend/vertx/src/main/java/net/miarma/contaminus/server/ApiVerticle.java new file mode 100644 index 0000000..f764286 --- /dev/null +++ b/backend/vertx/src/main/java/net/miarma/contaminus/server/ApiVerticle.java @@ -0,0 +1,83 @@ +package net.miarma.contaminus.server; + +import java.util.Optional; + +import io.vertx.core.AbstractVerticle; +import io.vertx.core.Promise; +import io.vertx.core.eventbus.DeliveryOptions; +import io.vertx.core.eventbus.Message; +import io.vertx.core.json.JsonArray; +import io.vertx.core.json.JsonObject; +import io.vertx.ext.web.Router; +import io.vertx.ext.web.RoutingContext; +import net.miarma.contaminus.common.Constants; +import net.miarma.contaminus.database.QueryBuilder; + +public class ApiVerticle extends AbstractVerticle { + @Override + public void start(Promise startPromise) { + Constants.LOGGER.info("🟢 Iniciando ApiVerticle..."); + Router router = Router.router(vertx); + router.get(Constants.API_PREFIX + "/sensors").blockingHandler(this::getAllSensors); + router.get(Constants.API_PREFIX + "/sensors/:id").blockingHandler(this::getSensorById); + router.get(Constants.API_PREFIX + "/status").handler(ctx -> + ctx.json(new JsonObject().put("status", "OK")) + ); + vertx.createHttpServer().requestHandler(router).listen(8081); + startPromise.complete(); + } + + private void getAllSensors(RoutingContext context) { + Optional sort = Optional.ofNullable(context.request().getParam("_sort")); + Optional order = Optional.ofNullable(context.request().getParam("_order")); + // forma tela de rara que me ha dado chatgpt para parsear esto XD + Optional limit = Optional.ofNullable(context.request().getParam("_limit")) + .map(s -> { + try { + return Integer.parseInt(s); + } catch (NumberFormatException e) { + return null; + } + }); + + + String query = QueryBuilder + .select("*") + .from("sensor_mq_data") + .orderBy(sort, order) + .limit(limit) + .build(); + + vertx.eventBus().request("db.query", query, new DeliveryOptions(), ar -> { + if (ar.succeeded()) { + Message result = ar.result(); + JsonArray jsonArray = (JsonArray) result.body(); + context.json(jsonArray); + } else { + context.fail(500, ar.cause()); + } + }); + } + + + private void getSensorById(RoutingContext context) { + String id = context.request().getParam("id"); + + String query = QueryBuilder + .select("*") + .from("sensor_mq_data") + .where("id = " + id) + .build(); + + vertx.eventBus().request("db.query", query, new DeliveryOptions(), ar -> { + if (ar.succeeded()) { + Message result = ar.result(); + JsonArray jsonArray = (JsonArray) result.body(); + context.json(jsonArray); + } else { + context.fail(500, ar.cause()); + } + }); + } + +} diff --git a/backend/vertx/src/main/java/net/miarma/contaminus/server/DatabaseVerticle.java b/backend/vertx/src/main/java/net/miarma/contaminus/server/DatabaseVerticle.java index 24899b4..500a058 100644 --- a/backend/vertx/src/main/java/net/miarma/contaminus/server/DatabaseVerticle.java +++ b/backend/vertx/src/main/java/net/miarma/contaminus/server/DatabaseVerticle.java @@ -37,8 +37,6 @@ public class DatabaseVerticle extends AbstractVerticle { }); eventBus.consumer("db.query", this::handleDatabaseQuery); - - Constants.LOGGER.info("📡 DatabaseVerticle desplegado."); } private void handleDatabaseQuery(Message msg) { diff --git a/backend/vertx/src/main/java/net/miarma/contaminus/server/HttpServerVerticle.java b/backend/vertx/src/main/java/net/miarma/contaminus/server/HttpServerVerticle.java index 61f0736..acb6445 100644 --- a/backend/vertx/src/main/java/net/miarma/contaminus/server/HttpServerVerticle.java +++ b/backend/vertx/src/main/java/net/miarma/contaminus/server/HttpServerVerticle.java @@ -1,91 +1,18 @@ package net.miarma.contaminus.server; -import java.util.Optional; - import io.vertx.core.AbstractVerticle; -import io.vertx.core.eventbus.DeliveryOptions; -import io.vertx.core.eventbus.Message; -import io.vertx.core.json.JsonArray; -import io.vertx.core.json.JsonObject; import io.vertx.ext.web.Router; -import io.vertx.ext.web.RoutingContext; import io.vertx.ext.web.handler.StaticHandler; import net.miarma.contaminus.common.Constants; -import net.miarma.contaminus.database.QueryBuilder; public class HttpServerVerticle extends AbstractVerticle { @Override public void start() { Constants.LOGGER.info("🟢 Iniciando HttpServerVerticle..."); - Router router = Router.router(vertx); router.route("/*").handler(StaticHandler.create("webroot").setDefaultContentEncoding("UTF-8")); - - router.get(Constants.API_PREFIX + "/sensors").blockingHandler(this::getAllSensors); - router.get(Constants.API_PREFIX + "/sensors/:id").blockingHandler(this::getSensorById); - router.get(Constants.API_PREFIX + "/status").handler(ctx -> - ctx.json(new JsonObject().put("status", "OK")) - ); - - vertx.createHttpServer().requestHandler(router).listen(80, response -> { - if (response.succeeded()) { - Constants.LOGGER.info("🚀 Servidor HTTP desplegado en http://localhost:80"); - } else { - Constants.LOGGER.error("❌ Error al desplegar el servidor HTTP", response.cause()); - } - }); + vertx.createHttpServer().requestHandler(router).listen(8080); } - private void getAllSensors(RoutingContext context) { - Optional sort = Optional.ofNullable(context.request().getParam("_sort")); - Optional order = Optional.ofNullable(context.request().getParam("_order")); - // forma tela de rara que me ha dado chatgpt para parsear esto XD - Optional limit = Optional.ofNullable(context.request().getParam("_limit")) - .map(s -> { - try { - return Integer.parseInt(s); - } catch (NumberFormatException e) { - return null; - } - }); - - - String query = QueryBuilder - .select("*") - .from("sensor_mq_data") - .orderBy(sort, order) - .limit(limit) - .build(); - - vertx.eventBus().request("db.query", query, new DeliveryOptions(), ar -> { - if (ar.succeeded()) { - Message result = ar.result(); - JsonArray jsonArray = (JsonArray) result.body(); - context.json(jsonArray); - } else { - context.fail(500, ar.cause()); - } - }); - } - - private void getSensorById(RoutingContext context) { - String id = context.request().getParam("id"); - - String query = QueryBuilder - .select("*") - .from("sensor_mq_data") - .where("id = " + id) - .build(); - - vertx.eventBus().request("db.query", query, new DeliveryOptions(), ar -> { - if (ar.succeeded()) { - Message result = ar.result(); - JsonArray jsonArray = (JsonArray) result.body(); - context.json(jsonArray); - } else { - context.fail(500, ar.cause()); - } - }); - } } diff --git a/backend/vertx/src/main/java/net/miarma/contaminus/server/MainVerticle.java b/backend/vertx/src/main/java/net/miarma/contaminus/server/MainVerticle.java index 954af6b..7052a69 100644 --- a/backend/vertx/src/main/java/net/miarma/contaminus/server/MainVerticle.java +++ b/backend/vertx/src/main/java/net/miarma/contaminus/server/MainVerticle.java @@ -1,14 +1,39 @@ package net.miarma.contaminus.server; import io.vertx.core.AbstractVerticle; +import io.vertx.core.DeploymentOptions; import io.vertx.core.Promise; +import io.vertx.core.ThreadingModel; +import net.miarma.contaminus.common.Constants; public class MainVerticle extends AbstractVerticle { @Override public void start(Promise startPromise) { - getVertx().deployVerticle(new DatabaseVerticle()); - getVertx().deployVerticle(new HttpServerVerticle()); + final DeploymentOptions options = new DeploymentOptions(); + options.setThreadingModel(ThreadingModel.WORKER); + + getVertx().deployVerticle(new DatabaseVerticle(), options, result -> { + if(result.succeeded()) { + Constants.LOGGER.info("📡 HttpServerVerticle desplegado.(http://localhost:8080)"); + } else { + Constants.LOGGER.error("❌ Error al desplegar HttpServerVerticle", result.cause()); + } + }); + getVertx().deployVerticle(new ApiVerticle(), options, result -> { + if(result.succeeded()) { + Constants.LOGGER.info("📡 ApiVerticle desplegado. (http://localhost:8081/api/v1)"); + } else { + Constants.LOGGER.error("❌ Error al desplegar ApiVerticle", result.cause()); + } + }); + getVertx().deployVerticle(new HttpServerVerticle(), result -> { + if(result.succeeded()) { + Constants.LOGGER.info("📡 DatabaseVerticle desplegado."); + } else { + Constants.LOGGER.error("❌ Error al desplegar HttpServerVerticle", result.cause()); + } + }); } @Override diff --git a/backend/vertx/src/main/resources/webroot/config/settings.json b/backend/vertx/src/main/resources/webroot/config/settings.json index 255c3dd..e5fad45 100644 --- a/backend/vertx/src/main/resources/webroot/config/settings.json +++ b/backend/vertx/src/main/resources/webroot/config/settings.json @@ -7,7 +7,7 @@ }, "appConfig": { "endpoints": { - "baseUrl": "http://localhost:80/api/v1", + "baseUrl": "http://localhost:8081/api/v1", "sensors": "sensors", "sensor": "sensors/sensor" }, diff --git a/backend/vertx/target/classes/webroot/config/settings.json b/backend/vertx/target/classes/webroot/config/settings.json index 255c3dd..e5fad45 100644 --- a/backend/vertx/target/classes/webroot/config/settings.json +++ b/backend/vertx/target/classes/webroot/config/settings.json @@ -7,7 +7,7 @@ }, "appConfig": { "endpoints": { - "baseUrl": "http://localhost:80/api/v1", + "baseUrl": "http://localhost:8081/api/v1", "sensors": "sensors", "sensor": "sensors/sensor" },