J'ai une application pilotée par une source d'événements horizontale qui s'exécute à l'aide d'un sujet Azure Service Bus Topic et d'une file d'attente Service Bus. Certains événements de construction de l'état de mon modèle de domaine sont reçus par le sujet par tous mes serveurs, tandis que ceux de la file d'attente (ceux reçus plus souvent et non mutants) sont répartis entre les serveurs afin de distribuer charge.DocumentDB insert simultané unique?
Maintenant, chaque fois que l'un de mes serveurs reçoit un événement dans la file d'attente ou d'un sujet, il le stocke dans un DocumentDB qu'il utilise comme magasin d'événements.
Maintenant, voici le problème. Comment puis-je être sûr que le même document n'est pas inséré deux fois? Disons que 3 serveurs reçoivent le même événement. Ils essaient tous de le stocker. Comment puis-je le faire échouer pour 2 des serveurs dans le cas où ils décident de faire tout cela en même temps? Existe-t-il une forme de contrainte unique que je peux définir dans DocumentDB ou une sorte de portée de transaction pour empêcher l'insertion du document deux fois?
Est-il possible de concevoir l'identifiant de sorte qu'il en soit de même si vous aviez le même document? Si c'est le cas, écrivez simplement toujours à cet id. –