5

我对 Akka 很陌生,我很想为我的应用程序的设计决策提供一些支持。我有一个相当典型的客户端/服务器应用程序。在开始时,客户端应该能够在应用程序级别进行身份验证,之后应该能够在正常操作模式下运行。还有其他状态,例如关闭,断开连接等。pp。

目前,我使用become()

public class MyServerActor extends UntypedActor {
  Procedure<Object> normal = new Procedure<Object>() {
    @Override
    public void apply(Object msg) {
      handleMessage(msg);
    }
  };

  @Override
  public void onReceive(Object msg) throws Exception {
    if (msg instanceof LoginMessage) {
      // do login stuff, assume the login was successful
      getContext().become(normal);
  }

所以我会Procedure为不同的状态使用不同的。但是,在http://doc.akka.io/docs/akka/snapshot/java/fsm.html的文档中,有一个有限状态机描述,它几乎像标准状态机一样工作;根据状态做某些动作。

我想知道哪种方法更好?或者在 Akka 中使用 java 实现客户端/服务器应用程序的常用方法是什么?

4

1 回答 1

1

如果您要采用基于状态的方法,请使用Procedureand become。很清楚您处于特定状态,因为该状态的所有代码都组合在一起。

于 2013-06-03T12:18:24.380 回答