(Opcional) Ampliar el consumidor
En esta sección opcional, mostramos cómo puede ampliar el código del consumidor para un escenario ligeramente más complicado.
Si desea conocer cuáles son las mayores operaciones de venta de cada minuto, puede modificar la clase StockStats
en tres lugares para dar cabida a esta nueva prioridad.
Para ampliar el consumidor
-
Agregue nuevas variables de instancia:
// Ticker symbol of the stock that had the largest quantity of shares sold private String largestSellOrderStock; // Quantity of shares for the largest sell order trade private long largestSellOrderQuantity;
-
Añada el siguiente código a
addStockTrade
:if (type == TradeType.SELL) { if (largestSellOrderStock == null || trade.getQuantity() > largestSellOrderQuantity) { largestSellOrderStock = trade.getTickerSymbol(); largestSellOrderQuantity = trade.getQuantity(); } }
-
Modifique el método
toString
para imprimir la información adicional:public String toString() { return String.format( "Most popular stock being bought: %s, %d buys.%n" + "Most popular stock being sold: %s, %d sells.%n" + "Largest sell order: %d shares of %s.", getMostPopularStock(TradeType.BUY), getMostPopularStockCount(TradeType.BUY), getMostPopularStock(TradeType.SELL), getMostPopularStockCount(TradeType.SELL), largestSellOrderQuantity, largestSellOrderStock); }
Si ejecuta el consumidor ahora (recuerde ejecutar también el productor), debería ver un resultado similar a este:
****** Shard shardId-000000000001 stats for last 1 minute ****** Most popular stock being bought: WMT, 27 buys. Most popular stock being sold: PTR, 14 sells. Largest sell order: 996 shares of BUD. ****************************************************************