Nservicebus同步通话

时间:2010-10-18 14:27:02

标签: nservicebus

我正在为我的一个项目使用NServiceBU的请求回复模型。有一个自托管服务总线侦听请求消息并回复请求消息。 所以在WCF消息代码中,我编码了

// 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;

destinaton que将发送回复。 我得到的是一个或两个以上的时间,因为回复不是来自客户端。我做错了什么

1 个答案:

答案 0 :(得分:3)

为什么要尝试将同步框架转换为同步框架?你想要做的事情有一个根本的缺陷。

您应该长时间仔细研究您的设计,并了解同步通话的好处。你正在做的事实

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

非常关注。你想用这个来实现什么?基于同步消息传递通信设计您的系统,您将拥有更好的系统。否则你可能只是使用某种阻塞tcp / ip套接字。