我正在为我的一个项目使用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将发送回复。 我得到的是一个或两个以上的时间,因为回复不是来自客户端。我做错了什么
答案 0 :(得分:3)
为什么要尝试将同步框架转换为同步框架?你想要做的事情有一个根本的缺陷。
您应该长时间仔细研究您的设计,并了解同步通话的好处。你正在做的事实
// block the current thread.
synchronousMessageSent.AsyncWaitHandle.WaitOne(1000);
非常关注。你想用这个来实现什么?基于同步消息传递通信设计您的系统,您将拥有更好的系统。否则你可能只是使用某种阻塞tcp / ip套接字。