Comme je l'ai appris dans Why is the CQRS repository publishing events, not the event store?, c'est la tâche du référentiel CQRS de publier des événements. Jusqu'ici tout va bien.CQRS: Stocker des événements et les publier - comment le faire en toute sécurité?
Bien sûr, le stockage des événements et leur publication doivent se faire en une seule transaction. Techniquement, cela signifie écrire un (ou plusieurs) enregistrements dans le magasin et publier un (ou plusieurs) événement (s) sur un bus de messages. Par conséquent, une simple transaction de base de données ne suffit pas, elle devrait être distribuée.
Désormais, malheureusement, de nombreuses bases de données NoSQL (telles que MongoDB) ne prennent pas en charge les transactions compatibles ACID, même pas pour parler de la possibilité d'avoir lieu dans une transaction distribuée. De plus, il existe des files d'attente de messages qui ne prennent pas en charge les transactions distribuées. Donc, la question est: Comment faire face à cela?
Y a-t-il un modèle recommandé à utiliser?
Merci de remarquer ces articles sur :-) –
+1 pour une grande explication –
Merci pour cela - incroyablement utile. En ce qui concerne la surveillance du magasin d'événements - comment pourrait-on accomplir cela sans sondage? Existe-t-il un mécanisme plus réactif pour le faire sans introduire le 2PC? – CraigM