package com.pluralsight.dockerproductionaws.trader; import com.pluralsight.dockerproductionaws.common.MicroserviceVerticle; import com.pluralsight.dockerproductionaws.portfolio.PortfolioService; import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; import io.vertx.core.Future; import io.vertx.core.eventbus.EventBus; import io.vertx.core.eventbus.MessageConsumer; import io.vertx.core.json.JsonObject; import io.vertx.servicediscovery.types.EventBusService; /** * A compulsive trader... */ public class CompulsiveTraderVerticle extends MicroserviceVerticle { private Config config; @Override public void start(Future<Void> future) { super.start(); // Get configuration config = ConfigFactory.load(); String company = TraderUtils.pickACompany(); int numberOfShares = TraderUtils.pickANumber(); EventBus eventBus = vertx.eventBus(); EventBusService.getProxy(discovery, PortfolioService.class, ar -> { if (ar.failed()) { System.out.println("Portfolio service could not be retrieved: " + ar.cause()); } else { // Our services: PortfolioService portfolio = ar.result(); MessageConsumer<JsonObject> marketConsumer = eventBus.consumer(config.getString("market.address")); // Listen to the market... marketConsumer.handler(message -> { JsonObject quote = message.body(); TraderUtils.dumbTradingLogic(company, numberOfShares, portfolio, quote); }); } }); } }