与nservicebus同步的消息

时间:2010-01-05 09:11:37

标签: nservicebus

我有一个需要以同步方式调用nservicebus的Web服务。 如何实现这一目标?

3 个答案:

答案 0 :(得分:1)

看看AsyncPages示例。如果你希望它是同步的,只需阻塞直到回调完成。

希望这有帮助!

答案 1 :(得分:1)

还可以选择将NServiceBus端点作为Web服务和wcf服务公开,并且可以像您期望的那样同步调用这些端点。

答案 2 :(得分:1)

客户端不是aspx页面,所以我不能像async样本那样使用它。 我正在使用RIA服务,所以我无法控制wcf服务本身的同步。 我通过使用Wait和Pulse来解决它:

    [WebMethod]
    public string HelloWorld(int number)
    {
        string returnVal = "" ;
        var command = new Command { Id = number };
        lock(this)
        {                
            Global.Bus.Send(command).Register<ErrorCodes>(code => 
                {
                    lock(this)
                    {
                        returnVal = returnVal = Enum.GetName(typeof(ErrorCodes), code);
                        Monitor.Pulse(this);
                    }
                }
            );

            Monitor.Wait(this);                
        }
        return returnVal;
    }