Clause de non-responsabilité: Ceci est une question subséquente de my other question about NServiceBus qui était answered very thoroughly.NServiceBus, NHibernate et GuidComb()
Ma question actuelle est la suivante: Si un site Web est construit pour être «bête» comme l'article mentionné ci-dessus, suggère alors comment fonctionne le scénario suivant?
Un utilisateur s'inscrit sur un site Web en remplissant un formulaire avec des détails pertinents. Lorsque l'utilisateur clique sur le bouton "Soumettre" dans le formulaire, l'application Web prend les données du formulaire et crée un message qu'il envoie au niveau application en utilisant NServiceBus et Bus.Send(). Le niveau applicatif s'occupe de la création du nouvel utilisateur et de la publication de l'événement que l'utilisateur a créé (Bus.Publish()) afin que les autres processus puissent faire leur travail (envoyer un e-mail au nouvel utilisateur, ajouter l'utilisateur à un index de recherche , etc).
Maintenant, puisque l'application Web de ce scénario repose entièrement sur le niveau de l'application pour la création de la nouvelle instance d'utilisateur, comment est-ce qu'elle apprend à connaître l'ID de l'utilisateur? Si je n'utilisais pas NServiceBus dans ce scénario, mais plutôt que le site Web lance un appel en cours à un DAL, j'utiliserais la stratégie GuidComb() de NHibernate pour créer l'identifiant du nouvel utilisateur avant de conserver la nouvelle ligne dans le base de données. Si l'application du gestionnaire de messages qui reçoit la commande pour créer un nouvel utilisateur (dans le scénario actuel) utilise la même stratégie, comment l'ID utilisateur est-il communiqué à l'application Web? Dois-je appliquer une stratégie différente pour gérer les identifiants dans un scénario comme celui-ci?
Bonjour. C'est une bonne idée, et j'ai utilisé quelque chose de similaire avec un blindage d'exception où une erreur est communiquée entre deux systèmes et persiste avec des identifiants différents dans chaque système. Cependant, dans ce scénario, quelle serait la longévité de l'identifiant de corrélation? Je n'aurais pas nécessairement besoin que l'identifiant de l'utilisateur me soit renvoyé dans la même requête web - mais j'aimerais pouvoir utiliser le userId réel autant que possible dans le système plutôt que de l'utiliser et l'identifiant de corrélation dans combinaison. Sinon je devrai indexer sur deux ids ... Hmmm! Nourriture pour la pensée. Bonne suggestion. Merci! –
Vous devez utiliser l'ID de corrélation _only_ pour corréler les messages/événements liés au processus de création de l'utilisateur. – mookid8000
Dès que l'utilisateur a été créé et que l'ID utilisateur est connu, je dirais que l'ID de corrélation doit être supprimé, car il est «local» au processus de création de l'utilisateur. – mookid8000