将NServiceBus与Asp.Net MVC 2一起使用

Pet*_*ler 7 c# nservicebus asp.net-mvc-2

有没有办法在Asp.Net MVC 2中使用NServiceBus?我想从Asp.Net MVC2应用程序向服务发送请求消息,该服务处理消息并回复响应消息.有没有办法清楚地做到这一点?

And*_*und 18

NServiceBus仅支持为状态代码和整数注册回调.这个原因是你不应该使用NServiceBus进行同步请求/响应式通信,这些场景最好用Wcf,NNibernate,EF,Ado.net等框架来解决.

您应该只考虑将NSB用于应用程序的异步部分,例如将"命令"发送到后端服务以进行处理.

可以在这里找到深入的解释:

http://andreasohlund.net/2010/04/22/messaging-shouldnt-be-used-for-queries

如果您仍然希望使用NSB进行请求/响应,则必须为它工作:)使用消息处理程序为您的响应更新MVC应用程序中的某些缓存.有了它,您可以执行一些ajax样式轮询以确定数据何时到达.

希望这可以帮助!


Udi*_*han 14

如果你真的想这样做,请按以下步骤操作:

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*/);
Run Code Online (Sandbox Code Playgroud)