7

Posted this on StackOverflow, but I think it's probably more germane to this crowd.

I am having an issue with sending a MSMQ message to the second DNS name on a server. If we send the IP for that same server, we're fine, but that's not where we are going architecturally. Any ideas as to why MSMQ would care about which name it receives?

Here is our example:

Server Information: The physical server load-int-01, has a second IP and DNS name associated with it. First IP/DNS: load-int-01, with IP 10.0.10.10 Second IP/DNS: load-intv, with IP 10.0.10.20

Queue path formats used:

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

FormatName:DIRECT=OS:load-intv\private$\MyQueue -> Returns the following error:

The queue does not exist or you do not have sufficient permissions to perform this operation

We have also tried using the IP addresses instead, and both sets of IPs work fine.

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

slayernoah
  • 1,570
  • 2
  • 12
  • 19
Bob
  • 295
  • 1
  • 3
  • 11

4 Answers4

3

To resolve via DNS use the DNS name rather than the IP this way--both should resolve:

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

Additionally, run the following registry script on the MSMQ server (per http://support.microsoft.com/kb/306785):

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

Could be due to reverse lookup. I'm not sure how MSMQ gets its hostname info, but if it's getting the hostname from Windows and not the DNS hostname of the second IP then a reverse lookup for the second IP would fail since it would return the second dns hostname which is different then the actual hostname of the server.

squillman
  • 37,618
  • 10
  • 90
  • 145
  • Tried that. Reverse lookups of both IPs returned the correct DNS names. – Bob Jun 04 '09 at 20:13
  • Right, but if MSMQ is expecting any reverse lookup to come back with the actual comptername of the server then your reverse lookup for the 2nd IP is going to fail as it will have a different name than your machine name. Just a thought. – squillman Jun 04 '09 at 20:24
  • 4
    Yup, just got off the phone with Microsoft.... This is a limitation of MSMQ. You can not receive on queues with aliased DNS names. You can SEND to queues with an aliased DNS name provided you use two registry keys, OptionalNames (listed below) and IgnoreOSNameValidation. to implement the IgnoreOSNameValidation key, use this article: http://support.microsoft.com/default.aspx?scid=kb;EN-US;899611 Back to virtual ip's for us, or we might keep the virtual name for the sending connection strings (with the reg settings) and use .\ for the receiving servername...that works. – Bob Jun 05 '09 at 20:18
1

MSMQ is probably expecting the computer's netbios name to match the dns hostname used to get there. It's the same problem you have when you try to use a CNAME to map a drive to a Windows server.

There is a way to alias the name for it by adding a registry entry:

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.
Moose
  • 1,591
  • 1
  • 8
  • 7
0

Are you sending on the same machine (local to load-intv) or from a remote machine?

Also, what IP addresses are actually returned when you query DNS for load-intv and load-int-01? Just the ones you mention - 10.0.10.20 and 10.0.10.10 respectively - or extra ones?

Any HOSTS files involved? If so, do you have any other DNS names mapped to 10.0.10.20?

Cheers John Breakwell (MSFT)

  • We're using the connection string both locally and remotely...same results. No hosts files, and no names other than the two provided. Thanks! – Bob Jun 05 '09 at 13:24