不在NServiceBus中自动创建队列

我正在运行NServiceBus 3.0.0 rc2但是当我启动应用程序(作为本地管理员)而没有预先创建MSMQ时,它出错了:

队列不存在或您没有足够的权限来执行操作。

使用NServiceBus 2.6没有发生这种情况。

以下是我的配置:

var bus = Configure.With() .Log4Net() .NinjectBuilder() .XmlSerializer() .DefiningCommandsAs(t => typeof(ICommand).IsAssignableFrom(t)) .DefiningEventsAs(t => typeof(IEvent).IsAssignableFrom(t)) .DefiningMessagesAs(t => typeof(IMessage).IsAssignableFrom(t)) .MsmqTransport() .DefineEndpointName("subscriber.input") .IsTransactional(true) .PurgeOnStartup(false) .UnicastBus() .LoadMessageHandlers() .ImpersonateSender(false) .CreateBus() .Start(); 

   

我可以看到一个配置扩展方法来禁用自动创建队列但没有启用它。

如果我预先创建队列,它工作正常。

自托管时,安装程​​序不会自动运行。 有关如何手动执行此操作的示例,请参阅asyncpages示例中的global.asax.cs 。

 using NServiceBus using NServiceBus.Installation.Environments ... Bus = Configure.With() .Log4Net() .DefaultBuilder() .XmlSerializer() .MsmqTransport() .IsTransactional(false) .PurgeOnStartup(false) .UnicastBus() .ImpersonateSender(false) .CreateBus() .Start(() => Configure.Instance.ForInstallationOn().Install()); 

我通过手动在客户端创建队列(这是自托管)来解决这个问题。

不确定,但我认为2.x会自动完成。 主机正在按预期自动创建队列,但不是客户端(自托管)。

更新:像Andreas,Senor guardo camino所说,你需要像这样手动调用安装;

 .Start(() => Configure.Instance.ForInstallationOn().Install()); 

这将按预期创建队列。