自托管NServiceBus不读取队列

Gle*_*ven 0 nservicebus

我在MVC4应用程序中运行NSB 3.2.8自托管,这是我的配置:

Configure.With()
.DefiningMessagesAs(t => t.Namespace != null && namespaces.Contains(t.Namespace))
.CastleWindsorBuilder(container)
.XmlSerializer()
.Log4Net()
.MsmqTransport()
    .IsTransactional(true)
    .IsolationLevel(IsolationLevel.ReadUncommitted)
    .PurgeOnStartup(false)                  
.UnicastBus()
.ImpersonateSender(false)
.CreateBus()
.Start();
Run Code Online (Sandbox Code Playgroud)

我可以IBus在我的控制器中添加一个依赖项并将消息发送到队列中,Bus.SendLocal()但是没有从中读取队列,并且没有创建log4net日志文件.

Dav*_*ike 5

您没有提到您希望从中读取的队列.由于一个MVC-托管应用程序没有一个IConfigureThisEndpoint类来推断端点名称时,应使用.DefineEndpointName("MyEndpoint")后立即Configure.With()这样做-这会为输入队列,设置名称(如果适用).

我看到的另一个问题是,.UnicastBus()您需要调用.LoadMessageHandlers()声明您在MVC应用程序中处理消息的意图.很多时候,Web应用程序将是仅发送端点,因此无需创建输入队列或处理来自它的任何消息.调用此方法将扫描您的类型以获取消息处理程序,并开始从队列中读取.