【发布时间】:2016-01-29 13:04:21
【问题描述】:
Using NServiceBus with Asp.Net MVC 2 线程上的另一个问题。 Udi 已经回复说如果我们真的想这样做,可以使用以下方法。
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 是否根据从队列中收到的响应消息知道要恢复哪个线程?
如果我的理解是正确的,不建议在这种情况下使用消息传递(从网络应用程序向服务发送请求消息,服务处理消息并回复响应消息)
“例如,如果您要执行 GetCustomersByRegionRequest 和 CustomersByRegionResponse 之类的查询,则不应使用消息传递来实现。” - http://docs.particular.net/
【问题讨论】:
标签: web-applications nservicebus