NServiceBus Distributor / Worker ConfigurationErrorsException - ' MasterNodeConfig.Node'指向本地主机名:[localhost]

时间:2016-06-07 13:46:46

标签: nservicebus

我正在尝试配置NServiceBus分发服务器/工作程序以进行开发。我安装了以下依赖项:

  • NServiceBus.Core v5.2.14
  • NServiceBus.Distributor.MSMQ v5.0.4
  • NServiceBus.Host v6.0.0

在其中一个worker中抛出ConfigurationErrorsException,并显示以下消息:

  

' MasterNodeConfig.Node'指向本地主机名:[localhost]

此错误的目的很明确。指向localhost的配置会破坏分布式体系结构的目的。虽然出于开发目的,这种配置是最佳的。以下是我的工作人员的配置:                         

<TransportConfig MaxRetries="5"/>

<MasterNodeConfig Node="localhost"/>
<UnicastBusConfig
  DistributorControlAddress="distributor.distributor.control@localhost"
  DistributorDataAddress="distributor@localhost">
    <MessageEndpointMappings></MessageEndpointMappings>
</UnicastBusConfig>

<MessageForwardingInCaseOfFaultConfig ErrorQueue="error"/>

以下链接是一份工作样本:

Scale Out with the Distributor

将我的解决方案与上面链接中的示例进行比较,目前还不清楚可能导致我的worker中的ConfigurationErrorsException的原因。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

尝试为可以在单个计算机上运行的分发服务器创建示例(根据定义,它应该在多台计算机上运行),这有点困难。 (该示例确实讨论了在真实环境中进一步向下扩展。我们在顶部附近添加了一个注释以链接到它。)

示例中不在代码中的部分是appSetting:

<appSettings>
  <add 
    key="NServiceBus/Distributor/WorkerNameToUseWhileTesting" 
    value="Samples.Scaleout.Worker1" />
</appSettings>

如果存在此设置,将跳过对MasterNode配置中的环回地址的检查。遗憾的是,这没有记录,并且可能只是为了使这个样本有效。作为我提出的问题的一部分,我们将进行调查和解决。

但在现实生活中,您应该使用完整的计算机名称而不是localhost。当然,你不能在样本中做到这一点。

另一个问题是MasterNodeConfig上的DistributorControlAddressDistributorDataAddress / UnicastBusConfig属性并不是真的在一起,或者不需要

MasterNodeConfig是一种使用完全相同的配置文件配置所有端点的简单方法。如果端点为Sales且MasterNode为ServerA,则控制地址为Sales.Control@ServerA,数据地址为Sales@ServerA。但这总是假设多台机器。因此,这两个属性允许您指定可能位于同一台计算机上的自定义队列。因此,如果您使用这两个属性,那么您根本就不应该使用MasterNodeConfig