自托管NServiceBus不读取队列

时间:2012-10-02 06:26:10

标签: 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();

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

2 个答案:

答案 0 :(得分:5)

您没有提到您希望从中读取的队列。由于MVC托管的应用程序没有IConfigureThisEndpoint类来推断端点名称,因此您应该在.DefineEndpointName("MyEndpoint")之后立即使用Configure.With() - 这将设置输入队列的名称,如果适用的话。

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

答案 1 :(得分:0)

我认为您需要使用Configure.WithWeb()

另外,如何定义端点的名称?