If you are seeing this error (or something similar):

"MQError.DependentClientLicenseOverflow - Message Queuing server has reached the maximum number of dependent clients it can serve."

then you will probably be confused as it is very unlikely that you are using dependent clients.

You can determine if the client is dependent or independent using the Computer Management console. Alternatively, you can check the installed MSMQ options and see if Local Storage for MSMQ is a selected option (independent) or not (dependent).

If you are not using dependent clients then the real cause is going to be the number of licenses you have compared to the number of clients accessing the queues on the machine. I've covered MSMQ licensing in another blog post so I won't reiterate it all here. Basically your options are:

  • Buy more client access licenses
    • If a workstation is the queue host then you are restricted to a set number of licenes
  • Reduce the number of client machines accessing the queue host at the same time
  • Free up network connections quicker
    • MSMQ will normally close connections after several minutes of inactivity. If you set the CleanupInterval to a short value then licenses will be freed up quicker. 
    • There will still be situations where machines will conflict with each other for access but hopefully their frequency will be reduced.
    • Note this won't work with situations where clients continually monitor queues on a remote machine for messages.

[[Thanks to Gautam Mansinghka for technical input]]