Ich bin ziemlich neu in Akka und ich hätte gerne Unterstützung für eine Designentscheidung für meine Anwendung. Ich habe eine ziemlich typische Client/Server-Anwendung. Zu Beginn sollte der Client in der Lage sein, sich auf Anwendungsebene zu authentifizieren, und danach sollte er in der Lage sein, im normalen Betriebsmodus zu laufen. Es gibt auch andere Zustand wie Schließen, getrennt, etc. pp.Akka Design für Authentifizierung (Finite State Machine)
Im Moment habe ich realisiert dies mit 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);
}
So würde ich einen anderen Procedure
für einen anderen Zustand verwenden. Allerdings gibt es im Dokument unter http://doc.akka.io/docs/akka/snapshot/java/fsm.html eine Beschreibung der Finite State Machine, die so ähnlich funktioniert wie eine Standard-Zustandsmaschine; Abhängig vom Staat bestimmte Aktionen.
Ich frage mich, welche ist der bessere Ansatz? Oder wie ist der übliche Ansatz, eine Client/Server-Anwendung in Akka mit Java zu implementieren?