Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MSMQ messages disappear from outbound queue but never arrive in the inbound queue

Tags:

msmq

I have a strange issue setting up an existing application on our new internal Cloud.

I have a simple messaging system that pushes a message from one server (Server1) onto a MSMQ on another server (Server2). The messages disappear off the outbound but never appear in the inbound queue.

When I take Server2 msmq off line the messages build up on Server1. Restarting Msmq on Server2 causes the messages in the outbound queue on Server1 to disappear - but the message still never arrives at Server2.

The details:

  1. MSMQ is set up in Workgroup mode, as that's the virtual networks requirement.
  2. Queues are private.
  3. Permissions are set to allow certain users access.

Has anybody any ideas on why this is happening or how I could track down the issue.

like image 825
Johnny Avatar asked Dec 16 '22 00:12

Johnny


2 Answers

It could be that the remote private queue is a transactional queue and you send the message as non-transactional or vice versa. If the transaction setting on the queue and the message does not match, the message will disappear!

like image 111
Kjell-Åke Gafvelin Avatar answered May 10 '23 19:05

Kjell-Åke Gafvelin


I have seen this in the past with the direct format name where it was set to something like

DIRECT=OS:192.16.8.0.1\PRIVATE$\MyQueue

where I should have specified DIRECT=TCP:192.168.0.1\PRIVATE$\MyQueue

see: http://msdn.microsoft.com/en-us/library/windows/desktop/ms700996(v=vs.85).aspx

@John Breakwell had noted here http://blogs.msdn.com/b/johnbreakwell/archive/2010/01/22/why-does-msmq-keep-losing-my-messages.aspx:

Server name used to address message doesn't match destination machine When MSMQ receives a message from over the wire, it always validates that this machine is the correct recipient. This is to ensure that something like a DNS misconfiguration does not result in messages being delivered to the wrong place. The messages are, instead, discarded unless the IgnoreOSNameValidation registry value is set appropriately. You may want to do this with an Internet-facing MSMQ server, for example, where the domain and server names visible to MSMQ clients on the Internet often bear no resemblance to the real ones (for good security reasons).

like image 40
scaph01 Avatar answered May 10 '23 18:05

scaph01