我正在尝试使用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
{ }
}
答案 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()
{
}
}
需要在EndPoint-Configuration中完成(对于每个端点,这就是他建议使用基类的原因),它需要实现IConfigureThisEndpoint
。