Autre question sur le thread Using NServiceBus with Asp.Net MVC 2. Udi a répondu en disant que la méthode suivante peut être utilisée si nous voulons vraiment le faire.Utilisation de NServiceBus dans une application Web
var sync = Bus.Send<SomeMessage>(/*data*/)
.Register((AsyncCallback)delegate(IAsyncResult ar)
{
var result = ar.AsyncState as CompletionResult;
// do something with result.Messages
},
null
);
sync.AsyncWaitHandle.WaitOne(/*timeout*/);
Cela fonctionnera parfaitement dans une application Windows, car il n'y a qu'un seul utilisateur.
Je me demande comment cela fonctionnera dans une application Web; comme il existe plusieurs threads (pour plusieurs sessions utilisateur), appelez Bus.Send et attendez le rappel. Il n'y aura qu'une seule file d'attente de réponse (si ma compréhension est correcte). Est-ce que NServiceBus sait quel thread à reprendre en fonction du message de réponse qu'il a reçu de la file d'attente?
Si je comprends bien, il est recommandé de ne pas utiliser la messagerie pour ce genre de scénarios (envoyer un message de demande à partir d'une application Web à un service qui gère le message et la réponse avec un message de réponse)
" Par exemple, si vous souhaitez effectuer des requêtes telles que GetCustomersByRegionRequest et CustomersByRegionResponse, cela ne doit pas être implémenté à l'aide de la messagerie. " - http://docs.particular.net/