【发布时间】:2015-06-30 11:39:18
【问题描述】:
我正在尝试专门使用 Java(非 Scala)来理解 AKKA 2.10。我知道并发模式等在 Scala 中更具表现力,但我希望我的示例能够在 Java 中工作。
特别是我有一些产生消息的演员。 “BreadRollActor”生产面包,“BaconActor”生产培根,“SaladActor”生产沙拉。我现在有一个 BurgerAssemblyActor,它接收“消息”,即培根、面包卷、沙拉。我想将 2 条面包卷信息、1 条培根信息和 10 条沙拉信息组合成一个汉堡。作为演员,如何在 Akka Java 中最好地实现这一点。
public class Burger extends UntypedActor {
private final LoggingAdapter LOG = Logging.getLogger(context().system(), this);
@Override
public void onReceive(Object message) throws Exception {
if(message instanceof Bacon){
LOG.info("Received Bacon");
//Possibly add to a queue?
}
else if(message instanceof BreadRoll){
LOG.info("Received BreadRoll");
//Possibly add to a queue?
}
else if(message instanceof Salad){
LOG.info("Received Salad");
//Possibly add to a queue?
}
}
}
典型的 Java 开发人员的思维方式是将它们添加到队列中,然后运行另一个任务来获取 2 个面包卷、1 个汉堡和 10 个沙拉,制作一个汉堡并将它们放入另一个演员。然而,这意味着我控制了并发,但我假设这不是 akka 的重点? akka 在这里如何帮助我?我正在阅读 FSM 演员等概念,但现在我很清楚如何应用它,因此一些示例代码答案将非常有帮助。
【问题讨论】: