代码中的NServiceBus MasterNode配置正确解析Dns

时间:2013-04-08 08:12:04

标签: configuration nservicebus

前几天我遇到了这个错误,试图使用机器名而不是ip进行部署:

Could not translate format name to independent name: XXXX

经过一些研究后,我发现了Udi的这个描述:http://tech.groups.yahoo.com/group/nservicebus/message/15232

问题是我们无法关闭MSMQ AD。

所以相反,我已经完成了这项工作,我将机器名称解析为ipv4地址:

public class MasterNodeConfiguration : IProvideConfiguration<MasterNodeConfig>
{
    private const string _masterNodeMachineNameKey = "MasterNodeMachineName";
    private string _masterNodeMachineName = string.Empty;

    public MasterNodeConfiguration(IApplicationSettingsReader applicationSettingsReader)
    {
        var machineName = applicationSettingsReader.GetValue(_masterNodeMachineNameKey);

        ResolveMachineNameToIpAddress(machineName);
    }

    private void ResolveMachineNameToIpAddress(string machineName)
    {
        if (string.IsNullOrEmpty(machineName) == false)
        {
            _masterNodeMachineName = Dns.GetHostAddresses(machineName)
                .Single(address => address.AddressFamily == AddressFamily.InterNetwork)
                .ToString();
        }
    }

    public MasterNodeConfig GetConfiguration()
    {
        return new MasterNodeConfig
        {
            Node = _masterNodeMachineName,
        };
    }
}

我已经在机器边界进行了测试,但它确实有效。

我的问题:

此配置与我们的worker / dist / sender / publisher / subscriber配置放在同一个程序集中。它们都是用代码编写的:NServiceBus.Configure.With()。DefineEndpointName ...,这意味着如果它们不包含上面的appsettings键,所有这些配置都会选择一个Node值为NULL的MasterNode配置。这是危险还是NSB只是处理NULL节点,就像没有指定MasterConfig一样?

0 个答案:

没有答案