MSMQ doesn’t just drop data received. However, it discards message in certain circumstances here. The issue is that there is not enough visibility on what is happening. What I found helpful were following two.
1. Enabling Negative source journaling
Only if this is enabled, failed messages will be in the sending machine’s dead letter queue. By default, this isn’t enabled. You can enable it by setting registry value as follow - MSMQ 1.0 semantics.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters]
“XactDeadLetterAlways”=dword:00000001
Environment : MSMQ 5.0, Windows Server 2012 R2
2. Enabling End-to-end tracing
- Goto
Windows Logs
-Applications and Services Logs
-Microsoft
-Windows
-MSMQ
-Microsoft-Windows-MSMQ/End2End
- Open Log Properties for
Microsoft-Windows-MSMQ/End2End
- Enable logging
These would give the least visibility in terms of troubleshooting messaging purely between MSMQ.