自托管NServiceBus未读取队列

自托管NServiceBus未读取队列,nservicebus,Nservicebus,我正在MVC4应用程序中运行NSB 3.2.8自托管,这是我的配置: Configure.With() .DefiningMessagesAs(t => t.Namespace != null && namespaces.Contains(t.Namespace)) .CastleWindsorBuilder(container) .XmlSerializer() .Log4Net() .MsmqTransport() .IsTransactional(true)

我正在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日志文件。

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


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

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


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

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


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

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


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

Configure.WithWeb()已被弃用。Configure.With()现在可以检测它在什么环境中运行,并根据需要扫描web应用程序的bin目录或普通终结点的基本目录中的程序集。Configure.WithWeb()已被弃用。Configure.With()现在能够感知它运行在什么环境中,并根据需要扫描web应用程序的bin目录或普通终结点的基本目录中的程序集。它创建了队列,从调用
Configure
的命名空间中提取终结点名称,我尝试添加了这两个名称,它仍然没有处理队列OK,所以我删除了所有队列,重新启动了站点&它开始工作了。没有任何意义,但是
LoadMessageHandlers
可能是有帮助的:)可能队列最初是使用错误的权限创建的。有时,当我忘记设置IIS应用程序池的标识并对其进行更改时,我会遇到这个问题,然后我删除了队列,重新创建了队列,一切正常。它创建了队列,从调用
Configure
的命名空间中提取端点名称,我尝试添加了这两个名称,它仍然没有处理队列OK,所以我删除了所有队列,重新启动了站点&它开始工作了。没有任何意义,但是
LoadMessageHandlers
可能是有帮助的:)可能队列最初是使用错误的权限创建的。有时,当我忘记设置IIS应用程序池的标识并对其进行更改,然后删除队列,重新创建队列,然后一切正常时,我会遇到这个问题。