2010-10-18 3 views
0

J'utilise le modèle de réponse à la demande de NServiceBUs pour un de mes projets. Un bus de service auto-hébergé écoute un message de demande et répond avec un message de demande. Donc, dans le code de message WCF i ont codé commeAppel synchrone Nservicebus

// sent the message to bus. 
var synchronousMessageSent = 
    this._bus.Send(destinationQueueName, requestMessage) 
    .Register(
     (AsyncCallback)delegate(IAsyncResult ar) 
     { 
      // process the response from the message. 
      NServiceBus.CompletionResult completionResult = ar.AsyncState as NServiceBus.CompletionResult; 
      if (completionResult != null) 
      { 
       // set the response messages. 
       response = completionResult.Messages; 
      }              
     }, 
     null); 

     // block the current thread. 
     synchronousMessageSent.AsyncWaitHandle.WaitOne(1000); 
     return response; 

Le Qué de destinaton sera envoyé la réponse. Je reçois le resault une ou deux fois après que la réponse n'arrive pas au client. Est-ce que je fais quelque chose de mal

+0

Considérez ceci: http://stackoverflow.com/questions/3758405/nservice-bus-message-delay-problem – mynkow

Répondre

3

Pourquoi essayez-vous de transformer un cadre a-synchrone en un cadre synchrone? Il y a un défaut fondamental dans ce que vous essayez de faire.

Vous devriez examiner attentivement votre conception et apprécier les avantages des appels a-synchronisation. Le fait que vous le faites

Est hautement préoccupant. Qu'essayez-vous d'accomplir avec cela? Concevez votre système basé sur une communication de messagerie a-synchrone et vous aurez un système beaucoup mieux. Sinon, vous pourriez tout aussi bien utiliser une sorte de blocage des prises TCP/IP.

+0

Downvoted n'est pas une réponse. Si NServiceBus ne le supporte pas, alors dites qu'il ne le supporte pas et peut-être offrir pourquoi cela pourrait être et peut-être une opinion. Cette "réponse" est purement une opinion (que ce soit ou non la meilleure pratique, ou l'avertissement, le désaccord, l'option, etc.) – Sinaesthetic