Je suis nouveau dans le CQRS et les modèles de cohérence éventuelle, alors pardonnez-moi si c'est une question stupide. Étant donné que je ne fais que commencer, j'ai une mémoire locale CommandBus et EventPublisher. Mes événements sont conservés dans une base de données RavenDB à des fins de relecture, mais les événements sont publiés et les gestionnaires sont appelés localement (pas en file d'attente externe via NServiceBus et al). EventPublisher publie des événements de manière asynchrone (par exemple, Task.Factory.StartNew).CQRS dépendances Event Event Cohérence
Parfois, mes événements ont des dépendances (par exemple, l'événement OrderReceived doit être traité dans ReadModel avant que l'événement OrderShipmentStatusUpdated puisse être correctement traité dans ReadModel).
Comment puis-je gérer ce genre de scénario? Utiliser Sagas? Comment utiliser Sagas dans un modèle simple en mémoire comme décrit ci-dessus? Est-il considéré comme acceptable de «différer» un événement (peut-être le marquer comme différé et simplement essayer de retraiter tous les événements différés «de temps en temps»)?
Quelles sont les stratégies pour y faire face?
Merci.
avez-vous publié des événements de manière asynchrone? Si les événements sont publiés de manière synchrone, vous n'aurez aucun problème avec l'ordre des événements et vous ne devriez pas avoir de problème avec la cohérence éventuelle, car ils s'exécuteront dans le même thread que la commande. – Sarmaad
Performance. Et j'aurais encore des problèmes à moins que je synchronise à travers toutes les demandes de Web et ai seulement 1 serveur, non? – Jeff
@Jeff: Je pense que Sarmaad voulait dire que OrderReceived et OrderShipmentStatusUpdated devraient être traités de manière synchrone. – IlliakaillI