11

我们在向服务器上的第二个 DNS 名称发送 MSMQ 消息时遇到问题。如果我们为同一台服务器发送 IP,我们很好,但这不是我们在架构上要去的地方。关于为什么 MSMQ 会关心它收到的名称的任何想法?

服务器信息:

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

  • 第一个 IP/DNS: load-int-01, 带 IP10.0.10.10
  • 第二个 IP/DNS: load-intv, 带 IP10.0.10.20

使用的队列路径格式:

  • FormatName:DIRECT=OS:load-int-01\private$\MyQueue→ 工作正常
  • FormatName:DIRECT=OS:load-intv\private$\MyQueue→ 返回错误...

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

我们也尝试改用 IP 地址,两组 IP 都可以正常工作。

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

5 回答 5

9

我们刚刚和微软通了电话。这是 MSMQ 的限制。您无法在 DNS 名称与服务器 NETBIOS 名称不同的队列上接收。如果您使用上面提到的两个注册表项 OptionalNames 和 IgnoreOSNameValidation,您可以使用备用 DNS 名称发送到队列。

回到我们的虚拟 ip,或者我们可以保留发送连接字符串的虚拟名称(使用 reg 设置)并使用 .\ 作为接收服务器名称......这很有效。

谢谢您的帮助。

于 2009-06-05T20:14:25.577 回答
2

从:

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

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

所以请按照本文中的“IgnoreOSNameValidation”部分进行操作,希望对您有所帮助。

于 2009-06-04T21:14:19.913 回答
0

非常令人沮丧。我正在尝试迁移一些 MSMQ 目标(Web 服务),我想我必须将它们配置为使用虚拟 IP,并迁移虚拟 IP,因为迁移 NetBIOS 名称将是一项任务。

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

于 2010-03-11T15:54:08.310 回答
0

我有同样的问题,并得到它的工作。对我来说,诀窍是在设置 IgnoreOSNameValidation 注册表项后,您必须重新启动消息队列服务。

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

于 2014-08-19T02:13:23.647 回答
0

这对我有用:

FormatName:DIRECT=TCP:HOST.TLD\PRIVATE$\MyQueue 

请注意,使用TCP而不是OS. 这是相关文档

使用 Direct=TCP 的非事务性消息传递 此配置

功能无需任何特定的配置更改。

于 2020-05-15T12:28:28.367 回答