2009-06-04 39 views
10

我们有一个服务器上发送MSMQ消息发送到第二个DNS名称的问题。如果我们为同一台服务器发送IP,那么我们很好,但那不是我们进行架构设计的地方。关于为什么MSMQ会关心它收到的名称的任何想法?不能发送到MSMQ 2个DNS名称

服务器信息:

物理服务器load-int-01,具有与之相关联的第二IP和DNS名称。

  • 首先IP/DNS:load-int-01,与IP 10.0.10.10
  • 第二个IP/DNS:load-intv,与IP 10.0.10.20

队列路径的格式使用:

  • FormatName:DIRECT=OS:load-int-01\private$\MyQueue → Works Fine
  • FormatName:DIRECT=OS:load-intv\private$\MyQueue →返回错误…

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

我们已经使用的IP地址,而不是也试过和IPS的两套做工精细。

  • FormatName:DIRECT=TCP:10.0.10.10\private$\MyQueue →工作正常
  • FormatName:DIRECT=TCP:10.0.10.20\private$\MyQueue →工作正常
+0

你在使用事务队列吗? – 2009-06-04 22:33:20

+0

不是,但我们建立了一个测试应用程序,并尝试了事务性和非事务性。相同的结果。 当前,通过将IgnoreOSNameValidation(来自您的答案)注册表设置与另一个设置别名(HKEY_Local_Machine \ System \ CurrentControlSet \ Services \ LanmanServer \ Parameters中的Optional Names键)相结​​合,我们可以使用我们的命名约定发送到这些队列,但我们无法接受他们。没有这两个reg设置我们甚至不能发送。 – Bob 2009-06-05 17:26:08

回答

9

我们刚刚打完电话与微软合作。这是MSMQ的限制。您不能接收具有不同于服务器NETBIOS名称的DNS名称的队列。您可以发送到队列使用备用DNS名称只要你使用上面提到的,OptionalNames和IgnoreOSNameValidation两个注册表项。

回到虚拟IP的我们,或者我们可能会保留虚拟名称为发送连接字符串(使用reg设置)和使用。\用于接收服务器名...工程。

感谢您的帮助。

2

来自:

http://support.microsoft.com/default.aspx?scid=kb;EN-US;899611

默认情况下,消息队列验证它接收到determ的消息确定该消息是否适用于本地计算机。如果该消息不适用于本地计算机,则该消息被拒绝。

因此,请按照本文中的“IgnoreOSNameValidation”部分进行操作,我希望这会有所帮助。

0

非常沮丧。我试图迁移一些MSMQ目标(网络服务),我想我将不得不将它们配置为使用虚拟IP,并迁移虚拟IP,因为迁移NetBIOS名称将是一项任务。

MSMQ应该被重新命名MSMQ-1982,因为它似乎早称为“DNS”狡猾的和有用的抽象层的发明在1983年

0

我有同样的问题,得到了它的工作。我的技巧是在设置IgnoreOSNameValidation注册表项后,必须重新启动消息队列服务。

我知道这是一个旧帖子,但它在搜索此问题的解决方案时出现在Google中。