【问题标题】:Installing NServiceBus Infrastructure安装 NServiceBus 基础设施
【发布时间】:2012-12-07 14:37:08
【问题描述】:

我目前正在试用 NServiceBus,它在我的系统上运行良好。现在我想将它安装在我们的一台内部服务器上,以记录从头开始设置 nservicebus 需要做什么。我目前的策略是调用NServiceBus.Host /installInfrastructure,这似乎有效,它报告安装了RavenDB、Msmq 和DTC。但是,当我尝试运行我的示例应用程序(以管理员身份)时,我得到了一个异常:

2012-12-07 15:13:43,599 [1] FATAL NServiceBus.Hosting.GenericHost [(null)] <(null)> - System.InvalidOperationException: There is a problem with the input queue: FormatName:DIRECT=OS:dev\private$\els.bus.els.service. See the enclosed exception for details. ---> System.Messaging.MessageQueueException: The queue does not exist or you do not have sufficient permissions to perform the operation.
   at System.Messaging.MessageQueue.MQCacheableInfo.get_Transactional()
   at System.Messaging.MessageQueue.get_Transactional()
   at NServiceBus.Unicast.Queuing.Msmq.MsmqMessageReceiver.QueueIsTransactional()
   --- End of inner exception stack trace ---
   at NServiceBus.Unicast.Queuing.Msmq.MsmqMessageReceiver.QueueIsTransactional()
   at NServiceBus.Unicast.Queuing.Msmq.MsmqMessageReceiver.Init(Address address, Boolean transactional)
   at NServiceBus.Unicast.Transport.Transactional.TransactionalTransport.NServiceBus.Unicast.Transport.ITransport.Start(Address address)
   at NServiceBus.Unicast.UnicastBus.NServiceBus.IStartableBus.Start(Action startupAction)
   at NServiceBus.Hosting.GenericHost.Start()

我有什么遗漏吗?

【问题讨论】:

  • 是您创建队列还是让 NSB 创建队列?
  • 一些问题:您运行的是什么配置文件?您正在运行此代码的机器是否命名为dev?否则,您将尝试创建一个远程队列,这需要该计算机上的权限。如果这是本地计算机,您是否尝试过手动创建队列?如果在运行主机之前创建队列els.bus.els.service 会发生什么?

标签: nservicebus


【解决方案1】:

除了安装基础架构之外,您还需要调用 /install 标志来创建队列(这需要管理员权限)。

【讨论】:

  • 这似乎将应用程序安装为服务。这是创建队列所必需的吗?
  • 如果您通过 Visual Studio 在调试模式下运行它们,则创建队列时无需将进程安装为 Windows 服务。