1

先日、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 は単に MasterConfig が指定されていないかのように NULL ノードを処理しますか?

4

0 に答える 0