Je veux créer une saga qui est démarrée par le message "Event1" mais qui ignorera la réception des messages de démarrage "dupliqués" avec le même identifiant applicatif (qui peut résulter du fait que deux utilisateurs ou plus touchent un bouton UI dans une courte période temps). La documentation semble suggérer que cette approche fonctionnerait:Comment empêcher le démarrage d'une saga NServiceBus plusieurs fois?
- Saga déclare
IAmStartedByMessages<Event1>
- Saga se configure avec
ConfigureMapping<Event1>(s => s.SomeID, m => m.SomeID);
- poignée (Event1 EVT) définit un indicateur booléen lorsqu'il traite le premier message, et tombe du gestionnaire si le drapeau a déjà été défini.
Est-ce que cela fonctionnera? Aurai-je une condition de concurrence si les abonnés sont multithread? Si oui, comment puis-je atteindre le comportement souhaité?
Merci!
Ok, merci. Et ai-je raison de supposer que l'échec résultant de la contrainte unique fera en sorte qu'il sera retenté, ce qui frapperait alors ma logique de garde avec les résultats attendus? – jlew
C'est tout à fait vrai. –