package org.akka.essentials.stm.transactor.example2;
import org.akka.essentials.stm.transactor.example2.msg.AccountBalance;
import org.akka.essentials.stm.transactor.example2.msg.TransferMsg;
import akka.actor.ActorRef;
import akka.actor.ActorSystem;
import akka.actor.Props;
public class BankApplication {
ActorSystem _system = ActorSystem.apply("STM-Example");
ActorRef bank = _system.actorOf(new Props(BankActor.class), "BankActor");
public static void main(String args[]) {
BankApplication bankApp = new BankApplication();
bankApp.showBalances();
bankApp.bank.tell(new TransferMsg(Float.valueOf("1500")));
bankApp.showBalances();
bankApp.bank.tell(new TransferMsg(Float.valueOf("1400")));
bankApp.showBalances();
bankApp.bank.tell(new TransferMsg(Float.valueOf("3500")));
bankApp.showBalances();
bankApp._system.shutdown();
}
private void showBalances() {
try {
Thread.sleep(2000);
bank.tell(new AccountBalance("XYZ"));
bank.tell(new AccountBalance("ABC"));
} catch (Exception e) {
e.printStackTrace();
}
}
}