私は Akka を初めて使用するので、アプリケーションの設計上の決定について何らかのサポートが欲しいと思っています。かなり典型的なクライアント/サーバー アプリケーションがあります。最初に、クライアントはアプリケーション レベルで認証できる必要があり、その後は通常の操作モードで実行できる必要があります。閉じている、切断されているなどの他の状態もあります。
現時点では、これを使用して実装しました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のドキュメントには、標準のステート マシンのように機能する有限ステート マシンの説明があります。状態に応じて、特定のアクションを実行します。
どちらがより良いアプローチなのだろうか?または、Java を使用して Akka でクライアント/サーバー アプリケーションを実装する通常のアプローチは何ですか?