NServiceBus.IStartableBus未在容器中注册。 NServiceBus 4.6.3

时间:2014-07-21 19:32:02

标签: c# ninject nservicebus

我正在尝试使用NServiceBus和Ninject进行非常简单的应用程序。

我正在尝试使用Ninject作为NServiceBus的容器,但是我收到以下错误 - “NServiceBus.IStartableBus未在容器中注册。”

我确定答案很明显......就在我身边!

我的代码如下

public class StartApp : IWantCustomInitialization, IWantToRunWhenBusStartsAndStops
{
    private static IKernel _kernel;
    public IBus Bus { get; set; }

    public void Init()
    {
        Configure.Serialization.Json();
    }

    public void Start()
    {
        _kernel = new StandardKernel();

        Configure.With()
            .NinjectBuilder(_kernel)
            .CreateBus()
            .Start();

        Bus.Send(new TestMessage {Id = Guid.NewGuid(), MessageText = "Bloop"});
    }

    public void Stop()
    {

    }
}


namespace NServiceBus_Ninject_Simple
{
    public class EndpointConfig : IConfigureThisEndpoint, AsA_Server
    { }
}

1 个答案:

答案 0 :(得分:3)

This谷歌小组的讨论是关于同样的问题。

您似乎在错误的位置创建配置。 它应该是这样的:

public abstract class DefaultEndpointConfig
    : IConfigureThisEndpoint
    , IWantCustomInitialization
{
  IWantCustomInitialization.Init()
  {
    Configure
      .With()
      .NinjectBuilder();
      // + any other config;

    // Call optional endpoint specific config
    Init();
  }

  public virtual void Init()
  {
  }
}

请参阅here (Johannes Gustafsson)

需要在EndPoint-Configuration中完成(对于每个端点,这就是他建议使用基类的原因),它需要实现IConfigureThisEndpoint

相关问题