MSMQ supports a queue type called "Outgoing Queues". These queues are used by the MSMQ service to store messages destined for servers that it cannot communicate with when a message is generated. These are special time lines that are separate from regular public and private lines.
Recently, I came across a scenario when some messages destined for the local system (that is, the same computer that generated the message) fall into one of the "outgoing queues". When drilling in outgoing queues using the management console, you can see that the recipient has the correct path information for the local system and queue. In this particular case, messages that are stored in these "outbound queues" are never delivered to the correct queue. Stays there, actually lost.
Some messages destined for queues on the local system, including the same queues listed in Outgoing Queues, are delivered just fine. When messages end in Outbound Queues, it seems random. That is: some will work fine, others will not.
Queues that seem to suffer from this are not transactional. Transactional queues seem to be receiving messages. At least the application sending the message did not catch the exception for transaction queues.
What can cause MSMQ to place messages destined for queues on the local system in outbound queues? Does this mean that the MSMQ service cannot contact itself to send a message? The system is pretty busy (80% + CPU usage). Could MSMQ go hungry for resources when it does?
source share