NServiceBus使用Web API进行全双工总线回调

时间:2015-01-10 07:03:54

标签: asp.net-web-api nservicebus

项目来源:on github

客户端是带有OWIN和IIS主机的ASP.net Web API。服务器是控制台。

我有一个场景,当前线程必须等到NSB完成其功能。但是我的线程无休止地等待NSB回复。

var synchronousHandle = _bus.Send<MyCommand>(m => { m.TokenId = tokenId; })
    .Register(r => 
    {
        var completionResult = r.AsyncState as CompletionResult;
        if (completionResult == null || completionResult.Messages.Length <= 0) return;
        // Always expecting one IMessage as reply
        var response = completionResult.Messages[0];
    }, null);

synchronousHandle.AsyncWaitHandle.WaitOne();

在我的处理程序中:

Bus.Reply(new GenericResponseMessage { IsSuccess = true });

问题:

代码运行没有任何错误,客户端消息队列从Bus.Reply接收响应。但是回调没有得到回应。

1 个答案:

答案 0 :(得分:0)

this doco help?

在您的代码中,它已被注释掉(https://github.com/sanelib/WebStarterKit/blob/da796e69826072ae78443c7952cf2669d74a9ee7/DotNetServer/src/NSBus.Server/CommandHandlers/UserGrantAccessHandler.cs#L70

另一个选择是使用signalR(将是一个更可靠的选项恕我直言)看看Roy's blog post