2

Je connais bien la façon dont le PersistentActor et travail PersistentView en mettant en œuvre Akka persistance.Comment et où traiter les événements AkkaPersistence persistés pour rendre l'information utile et significative pour l'interface utilisateur réactive?

Considérons l'exemple suivant avec l'idée autant que je comprends.

Une classe de boîtier Scala Contactez.

case class Contact(id: String, version: Int, fName: String, lName: String, age: Int) 

Le PersistentActor a persisté des événements dans le journal sont:

ContactCreated("123af-232ff-232d", 1, "john", "doe", 25) 
FirstNameChanged("123af-232ff-232d", 2, "jan") 
AgeChanged("123af-232ff-232d", 3, 27) 
FirstNameChanged("123af-232ff-232d", 4, "janet") 

Chaque fois que les commandes sont envoyées à partir de l'interface utilisateur réactive, ces nouveaux événements persités si la validation réussit 202 CommandAccepted ou tout CommandValidationError étant riposté .

Mais sans retard important dans l'environnement réactif, l'interface utilisateur doit pouvoir interroger le back-end API REST et montrer la dernière objet Contact après le backend Websocket pousser informe l'interface utilisateur qui UUID « 123af-232ff -232d » est disponible pour la lecture:

Contact("123af-232ff-232d", 4, "janet", "doe", 27) 

Ce résultat devrait se produire après la fusion de tous les événements avec les dernières données disponibles que je comprends. Donc, ma préoccupation actuelle est: Comment et où dans cette application backend je fais le traitement de ces événements dès qu'ils sont générés, fusionner ces données, et stocker les données fusionnées pour la lecture par le côté de la requête.

Merci beaucoup à l'avance si certains pourraient faire la lumière sur la mise en œuvre ou la correction de ma pensée.

+0

Veuillez également me corriger si j'ai mal compris le flux du frontend au backend et vice-versa dans une application réactive. – PainPoints

+0

Est-ce que je dois maintenir l'état actuel à l'intérieur de PersistentActor en fusionnant chaque événement généré après leur persistance? et envoyer immédiatement une commande de requête GET à partir de l'interface utilisateur pour lire l'état actuel et afficher les données? – PainPoints

+0

... mais encore ... avant d'envoyer une requête GET, l'interface utilisateur doit savoir que l'état actuel est disponible ... – PainPoints

Répondre

0

L'état actuel de Contact peut ne pas être une vue en tant qu'état réel et, dans la vue, vous n'accepterez pas la cohérence éventuelle, ce qui sera le cas avec une vue.

Je garderais cela comme l'état à l'intérieur de l'acteur persistant et permettre une requête contre l'acteur pour obtenir le Contact actuel et l'utiliser.

+0

Par exemple, je dois interroger une liste de contacts, n'est-ce pas trop lourd pour maintenir le 'contactList' état dans PersistentActor en mémoire? – PainPoints

+0

J'ai trouvé le lien vers mes réponses: https://groups.google.com/forum/#!topic/akka-user/MNDc9cVG1To Akka Persistance du côté de la requête: la conclusion – PainPoints