NServiceBus Distributor/Worker ConfigurationErrorsException - 'MasterNodeConfig.Node' 指向本地主机名:[localhost]
NServiceBus Distributor/Worker ConfigurationErrorsException - 'MasterNodeConfig.Node' points to a local host name: [localhost]
我正在尝试配置 NServiceBus Distributor/Worker 用于开发目的。我安装了以下依赖项:
- NServiceBus.Core v5.2.14
- NServiceBus.Distributor.MSMQ v5.0.4
- NServiceBus.Host v6.0.0
其中一名工作人员抛出 ConfigurationErrorsException,并显示以下消息:
'MasterNodeConfig.Node' points to a local host name: [localhost]
这个错误的意图很明确。指向 localhost 的配置违背了分布式架构的目的。尽管出于开发目的,这种类型的配置是最佳的。以下是我的工人的配置:
<TransportConfig MaxRetries="5"/>
<MasterNodeConfig Node="localhost"/>
<UnicastBusConfig
DistributorControlAddress="distributor.distributor.control@localhost"
DistributorDataAddress="distributor@localhost">
<MessageEndpointMappings></MessageEndpointMappings>
</UnicastBusConfig>
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error"/>
下面的 link 是一个工作示例:
Scale Out with the Distributor
将我的解决方案与上面 link 中的示例进行比较,不清楚是什么导致了我的工作程序中的 ConfigurationErrorsException。有什么建议吗?
尝试为分发服务器创建一个可以在单台机器上 运行 的示例,根据定义应该在多台机器上 运行,这有点困难。 (示例确实讨论了在真实环境中向下扩展的问题。我们在靠近顶部的地方添加了注释 link。)
示例中不在您的代码中的部分是 appSetting:
<appSettings>
<add
key="NServiceBus/Distributor/WorkerNameToUseWhileTesting"
value="Samples.Scaleout.Worker1" />
</appSettings>
如果存在此设置,将跳过 MasterNode 配置中的环回地址检查。不幸的是,这没有记录,可能只是为了让这个示例工作。我们将作为我提出的问题的一部分进行调查和解决。
然而,在现实生活中,您确实应该使用完整的机器名称而不是本地主机。当然,您不能在示例中这样做。
另一项是 MasterNodeConfig
和 DistributorControlAddress
/DistributorDataAddress
属性 UnicastBusConfig
并没有真正结合在一起,或者不需要。
MasterNodeConfig
是一种使用完全相同的配置文件配置所有端点的简单方法。如果端点是Sales
,MasterNode是ServerA
,那么控制地址是Sales.Control@ServerA
,数据地址是Sales@ServerA
。但这总是假设多台机器。所以这两个属性允许您指定可能在同一台机器上的自定义队列。因此,如果您使用这两个属性,您根本不应该使用 MasterNodeConfig
。
我正在尝试配置 NServiceBus Distributor/Worker 用于开发目的。我安装了以下依赖项:
- NServiceBus.Core v5.2.14
- NServiceBus.Distributor.MSMQ v5.0.4
- NServiceBus.Host v6.0.0
其中一名工作人员抛出 ConfigurationErrorsException,并显示以下消息:
'MasterNodeConfig.Node' points to a local host name: [localhost]
这个错误的意图很明确。指向 localhost 的配置违背了分布式架构的目的。尽管出于开发目的,这种类型的配置是最佳的。以下是我的工人的配置:
<TransportConfig MaxRetries="5"/>
<MasterNodeConfig Node="localhost"/>
<UnicastBusConfig
DistributorControlAddress="distributor.distributor.control@localhost"
DistributorDataAddress="distributor@localhost">
<MessageEndpointMappings></MessageEndpointMappings>
</UnicastBusConfig>
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error"/>
下面的 link 是一个工作示例:
Scale Out with the Distributor
将我的解决方案与上面 link 中的示例进行比较,不清楚是什么导致了我的工作程序中的 ConfigurationErrorsException。有什么建议吗?
尝试为分发服务器创建一个可以在单台机器上 运行 的示例,根据定义应该在多台机器上 运行,这有点困难。 (示例确实讨论了在真实环境中向下扩展的问题。我们在靠近顶部的地方添加了注释 link。)
示例中不在您的代码中的部分是 appSetting:
<appSettings>
<add
key="NServiceBus/Distributor/WorkerNameToUseWhileTesting"
value="Samples.Scaleout.Worker1" />
</appSettings>
如果存在此设置,将跳过 MasterNode 配置中的环回地址检查。不幸的是,这没有记录,可能只是为了让这个示例工作。我们将作为我提出的问题的一部分进行调查和解决。
然而,在现实生活中,您确实应该使用完整的机器名称而不是本地主机。当然,您不能在示例中这样做。
另一项是 MasterNodeConfig
和 DistributorControlAddress
/DistributorDataAddress
属性 UnicastBusConfig
并没有真正结合在一起,或者不需要。
MasterNodeConfig
是一种使用完全相同的配置文件配置所有端点的简单方法。如果端点是Sales
,MasterNode是ServerA
,那么控制地址是Sales.Control@ServerA
,数据地址是Sales@ServerA
。但这总是假设多台机器。所以这两个属性允许您指定可能在同一台机器上的自定义队列。因此,如果您使用这两个属性,您根本不应该使用 MasterNodeConfig
。