无法使用2个DNS名称发送到MSMQ
向服务器上的第二个DNS名称发送MSMQ消息时出现问题。如果我们为同一台服务器发送IP,我们就可以了,但这不是我们在架构上要做的。关于为什么MSMQ会关心它收到的名称,有什么想法吗 服务器信息: 物理服务器无法使用2个DNS名称发送到MSMQ,dns,msmq,Dns,Msmq,向服务器上的第二个DNS名称发送MSMQ消息时出现问题。如果我们为同一台服务器发送IP,我们就可以了,但这不是我们在架构上要做的。关于为什么MSMQ会关心它收到的名称,有什么想法吗 服务器信息: 物理服务器load-int-01,具有与之关联的第二个IP和DNS名称 第一个IP/DNS:load-int-01,IP10.0.10.10 第二个IP/DNS:加载intv,IP10.0.10.20 使用的队列路径格式: FormatName:DIRECT=OS:load-int-01\priv
load-int-01
,具有与之关联的第二个IP和DNS名称
- 第一个IP/DNS:
,IPload-int-01
10.0.10.10
- 第二个IP/DNS:
,IP加载intv
10.0.10.20
→ 很好FormatName:DIRECT=OS:load-int-01\private$\MyQueue
→ 返回错误… 队列不存在,或者您没有足够的权限执行此操作FormatName:DIRECT=OS:load intv\private$\MyQueue
→ 很好FormatName:DIRECT=TCP:10.0.10.10\private$\MyQueue
→ 很好FormatName:DIRECT=TCP:10.0.10.20\private$\MyQueue
因此,请按照本文中关于“IgnoreOSNameValidation”的部分进行操作,我希望这会有所帮助。我们刚刚与Microsoft通完电话。这是MSMQ的一个限制。您不能在DNS名称与服务器NETBIOS名称不同的队列上接收。如果使用上述两个注册表项OptionalNames和IgnoreOSNameValidation,则可以使用备用DNS名称发送到队列 请为我们返回虚拟ip,或者我们可以保留发送连接字符串的虚拟名称(使用reg设置),并使用。\r作为接收服务器名称…这很有效
谢谢你的帮助。非常令人沮丧。我正在尝试迁移一些MSMQ目标(web服务),我想我必须将它们配置为使用虚拟IP,并迁移虚拟IP,因为迁移NetBIOS名称将是一项任务
MSMQ应该重新命名为MSMQ-1982,因为它似乎早于1983年发明了一种称为“DNS”的巧妙而有用的抽象层。我也遇到了同样的问题,并使其正常工作。我的窍门是在设置IgnoreOSNameValidation注册表项后,必须重新启动消息队列服务 我知道这是一篇老文章,但在谷歌搜索解决此问题的方法时,它出现了。这确实对我有用:
FormatName:DIRECT=TCP:HOST.TLD\PRIVATE$\MyQueue
请注意,使用TCP
而不是OS
。这是相关的:
使用Direct=TCP此配置发送非事务性消息
没有任何特定配置更改的功能
好发现。然而,我们最近已经尝试过了(这一个真的很糟糕。你在使用事务性队列吗?不,但我们设置了一个测试应用程序,并尝试了事务性和非事务性。结果相同。目前,通过将IgnoreOSNameValidation(来自下面的答案)注册表设置与另一个设置别名的注册表设置相结合,可以获得相同的结果(HKEY\U Local\U Machine\System\CurrentControlSet\Services\LanmanServer\Parameters中的可选名称键),我们可以使用命名约定发送到这些队列,但无法在它们上接收。如果没有这两个reg设置,我们甚至无法发送。