关于Using NServiceBus with Asp.Net MVC 2线程的另一个问题。 Udi回复说,如果我们真的想要这样做,可以使用以下方法。在Web应用程序中使用NServiceBus
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*/);
这将在Windows应用程序中完美工作,因为只有一个用户。
我想知道这将如何在Web应用程序中工作;因为有多个线程(用于多个用户会话)调用Bus.Send并等待回调。只有一个回复队列(如果我的理解是正确的)。
NServiceBus根据队列中收到的响应消息知道要恢复哪个线程?
如果我的理解是正确的,它是不推荐使用消息对这些类型的场景(从Web应用程序发送一个请求消息服务,其处理消息和一个响应消息回复)
“例如,如果您想执行像GetCustomersByRegionRequest和CustomersByRegionResponse这样的查询,那么不应该使用消息传递来实现。“ - http://docs.particular.net/