我正在尝试配置NServiceBus分发服务器/工作程序以进行开发。我安装了以下依赖项:
在其中一个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的原因。有什么建议吗?
答案 0 :(得分:2)
尝试为可以在单个计算机上运行的分发服务器创建示例(根据定义,它应该在多台计算机上运行),这有点困难。 (该示例确实讨论了在真实环境中进一步向下扩展。我们在顶部附近添加了一个注释以链接到它。)
示例中不在代码中的部分是appSetting:
<appSettings>
<add
key="NServiceBus/Distributor/WorkerNameToUseWhileTesting"
value="Samples.Scaleout.Worker1" />
</appSettings>
如果存在此设置,将跳过对MasterNode配置中的环回地址的检查。遗憾的是,这没有记录,并且可能只是为了使这个样本有效。作为我提出的问题的一部分,我们将进行调查和解决。
但在现实生活中,您应该使用完整的计算机名称而不是localhost。当然,你不能在样本中做到这一点。
另一个问题是MasterNodeConfig
上的DistributorControlAddress
和DistributorDataAddress
/ UnicastBusConfig
属性并不是真的在一起,或者不需要
MasterNodeConfig
是一种使用完全相同的配置文件配置所有端点的简单方法。如果端点为Sales
且MasterNode为ServerA
,则控制地址为Sales.Control@ServerA
,数据地址为Sales@ServerA
。但这总是假设多台机器。因此,这两个属性允许您指定可能位于同一台计算机上的自定义队列。因此,如果您使用这两个属性,那么您根本就不应该使用MasterNodeConfig
。