Question

J'intègre différents contextes délimités avec Windows Service Bus et j'ai quelques questions :

1) Comment détecter les doublons dans d’autres contextes délimités ?Stocker la dernière séquence de messages traitée ?Je veux avoir la possibilité de relancer des événements pour permettre la resynchronisation de nouveaux contextes délimités HandleEvent(OrderPlaced orderPlaced, bool isReplay) qui seront achetés en production à l'avenir pour une synchronisation initiale.

2) Pour le bus de messages inter-contextuels, utiliserions-nous un sujet par contexte délimité (et aurions-nous l'espace de noms pour regrouper les contextes délimités) ?Ou un seul contexte délimité par espace de noms ?

3) La documentation Message Bus indique que les messages peuvent arriver dans le désordre, quel algorithme doit être utilisé pour les réassembler dans l'ordre ?Que se passerait-il si les messages 6 et 8 étaient reçus, mais que le 7 n'arrivait jamais ?Allions-nous attendre une heure précise, puis continuer ?Comment autoriser l’auto-réparation ?

4) J'imagine que ce qui précède est assez courant dans presque tous les projets DDD. Existe-t-il des bibliothèques qui gèrent la messagerie, y compris le protocole commande/réponse, pour demander la synchronisation des événements précédents à partir d'un contexte étranger ?

Était-ce utile?

La solution

Cela ne répond pas à la plupart de vos questions, mais vous propose une alternative.

Beaucoup de ces problèmes ont disparu lorsque j'ai commencé à extraire des événements au lieu de me les envoyer.Si je tire, je garde simplement un point de contrôle du numéro d'événement que j'ai traité jusqu'à.Lorsque j'ai besoin de reconstruire, je supprime les modèles de lecture et le point de contrôle et les nouveaux modèles de lecture seront créés automatiquement.Puisque j'utilise un seul écrivain, les doublons ne posent pas de problème.La commande n'est pas non plus un problème.

Cependant, nous avons toujours des événements supprimés - mais ceux-ci ne sont utilisés que pour un comportement réactif.Par exemple;lorsqu'une commande est passée, imprimez un ticket.

Que cela ait du sens pour vous dépend de la rapidité avec laquelle vous devez réagir aux choses et de la fraîcheur dont vous avez besoin pour que vos données soient (1 seconde contre 30 secondes, etc.).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top