Why does MSMQ "lock" your outgoing queue?

If you have the following situation:

  • You can send messages to local queues
  • You can receive messages from local queues
  • You cannot send anything to remote destinations
    (messages will accumulate in the local outgoing queues which themselves show a status of "locked")
  • You cannot send anything to local queues from remote machines
    (messages will accumulate in the remote outgoing queues which themselves show a status of "waiting to connect")

then you have enabled Hardened MSMQ Mode.

In this mode, MSMQ is expecting you to be using an Internet-facing machine so all defences are up.
Only HTTP/HTTPS can be used for sending messages and the MSMQ service does not bother to listen to any of the usual ports.
Basically, all communication is through the web service only.

  • If you need Hardened MSMQ Mode then ensure you send messages over HTTP or HTTPS.
  • If you don't require this level of security then disable it and restart the MSMQ service

You can disable this feature using the following steps:

  1. In Computer Management, right-click Message Queuing and choose Properties
  2. Go to the Server Security tab
  3. Uncheck "Enable hardened MSMQ mode to secure this computer on the Internet. In this mode, only messages sent with HTTP/HTTPS format names will be delivered."