2016-07-10 2 views
3

J'ai récemment regardé plusieurs vidéos sur les modèles ES et CQRS et j'ai regardé peu de choses sur la persistance d'AKKA. Je sais de quoi ils parlent mais j'ai des problèmes pour écrire le code qui va s'exécuter.Comprendre la persistance AKKA et les principes ES et CQRS

J'ai quelques questions cependant. Comment devrais-je faire communiquer la vue et la pile d'événements? Est-ce que les événements seront passés entre la vue et l'acteur persistant ayant le même identifiant de persistance? Quels sont les acteurs persistants et la vue responsable selon le modèle?

Modifier: Où dois-je placer ma logique métier? Selon le modèle, je devrais le faire en écriture, mais si je dois vérifier quelque chose en lecture pour valider cmd?

+1

Parfois, j'ai un sentiment comme toute la communauté Akka évite cette question. Quoi qu'il en soit, 'PersistentView' est obsolète, aussi m'a-t-on conseillé personnellement d'utiliser Akka Persistence Query à la place. Du côté de la lecture, vous projetez tous les événements dans votre acteur de lecture et mettez à jour votre magasin de lecture (une base de données). L'acteur persistant est responsable de l'écriture des événements dans un magasin d'événements (également une base de données), de leur réponse et de leur utilisation pour mettre à jour son état. Heureusement, quelqu'un fera un petit exemple pour finalement clarifier la mise en œuvre correcte de ES et CQRS dans Akka. –

+0

@BranislavLazic Merci monsieur monsieur. C'est ce que j'avais besoin de savoir. J'ai regardé des tonnes de matériel et chaque approche était un peu différente. C'est dommage que les docs d'Akka ne soient pas aussi bons que ceux d'Elixir ... – Haito

+0

Voir http://stackoverflow.com/a/42941900/2113120 et http://stackoverflow.com/questions/38246786/akka-persistence-query -event-stream-and-cqrs – Cal

Répondre

0

Vous ne devriez pas avoir besoin de vérifier quelque chose dans votre mode de lecture pour valider une commande - votre commande s'exécuterait contre votre modèle d'écriture.

Votre logique d'entreprise irait dans votre écriture, si vous utilisez Akka puis à l'intérieur d'un acteur.

Vous avez pas dit ce que votre opinion est donc il pourrait y avoir plusieurs façons de communiquer - par exemple, si une page Web que vous pourriez faire req/res, ou utiliser quelque chose comme SignalR

+0

Je voulais utiliser PersistenceView à partir de la persistance akka mais il est devenu obsolète. Je sais que la logique va écrire le modèle, mais si j'ai besoin de vérifier si quelque chose est arrivé plus tôt? Autant que je comprends que l'information est stockée dans l'état qui est tenu par la vue. Alors devrais-je juste spammer les messages entre lire et écrire? – Haito

+0

Cela peut être utile si vous décrivez le problème réel car il est difficile de comprendre quand une telle description abstraite – tomliversidge

+0

Eh bien, j'ai juste mal compris l'idée et tout est clair maintenant. – Haito