无法将MSMQ消息发送到服务器的第二个DNS名称

发表在StackOverflow上,但我认为这可能与这个人群更密切。

我有一个MSMQ消息发送到服务器上的第二个DNS名称的问题。 如果我们为同一台服务器发送IP,那么我们没有问题,但是这不是我们正在build立的架构。 关于为什么MSMQ会关心收到哪个名字的任何想法?

这是我们的例子:

服务器信息:物理服务器load-int-01具有与之关联的第二个IP和DNS名称。 第一个IP / DNS: load-int-01 ,IP为10.0.10.10第二个IP / DNS为: load-intv ,IP为10.0.10.20

使用的队列path格式:

FormatName:DIRECT=OS:load-int-01\private$\MyQueue – > Works Fine

FormatName:DIRECT=OS:load-intv\private$\MyQueue – >返回以下错误:

该队列不存在或您没有足够的权限来执行此操作

我们也尝试使用IP地址,而这两组IP都正常工作。

FormatName:DIRECT=TCP:10.0.10.10\private$\MyQueue – > Works Fine FormatName:DIRECT=TCP:10.0.10.20\private$\MyQueue – > Works Fine

可能是由于反向查找。 我不确定MSMQ如何获取其主机名信息,但是如果从Windows获取主机名而不是第二个IP的DNS主机名,则第二个IP的反向查找将失败,因为它将返回不同的第二个DNS主机名那么服务器的实际主机名。

通过DNSparsing使用DNS名称而不是IP,这两种方法都应该解决:

 FORMATNAME:Direct=OS:load-intv\private$\MyQueue FORMATNAME:Direct=OS:load-int-01\private$\MyQueue 

此外,在MSMQ服务器上运行以下registry脚本(每个http://support.microsoft.com/kb/306785 ):

 reg.exe ADD HKLM\Software\Microsoft\MSMQ\Parameters /V IgnoreOSNameValidation /t REG_DWORD /d 1 /f 

MSMQ可能期望计算机的NetBIOS名称与用于实现的DNS主机名相匹配。 当您尝试使用CNAME将驱动器映射到Windows服务器时,也存在同样的问题。

有一种方法可以通过添加registry项来为其名称添加别名:

 HKEY_Local_Machine\System\CurrentControlSet\Services\LanmanServer\Parameters Add Value: OptionalNames REG_SZ with as value the name of the alias If you make it a type REG_MULTI_SZ, you can add multiple aliases. 

你是在同一台机器上发送(local-load-intv)还是从远程机器发送?

另外,什么IP地址实际上返回时,您查询负载intv和load-int-01的DNS? 只是你提到的那个 – 分别是10.0.10.20和10.0.10.10 – 还是额外的?

涉及任何HOSTS文件? 如果是这样,你有任何其他的DNS名称映射到10.0.10.20?

欢呼声John Breakwell(MSFT)