This section will help you to understand and position MSMQ.
What is it?
Microsoft Message Queue (MSMQ) is a Windows component which can be set up to create a message queueing capability on Windows Server. MSMQ has been around for a long time and is a robust and reliable component which many organisations have used to create message queue solutions. MSMQ is a propitiatory Microsoft implementation of a message queue server and is best used in a Microsoft to Microsoft scenario.
In recent times the work on standards around message queueing such as AMQP have lead to newer technologies which tend to get more of the headlines these days. As an example Azure Service Bus and Windows Server Service Bus are a more modern choice of Message Queue implementation on Microsoft because their visions are aligned to the newer messaging standards but customers still use MSMQ for new projects today because of its history and reliability.
Microsoft are unlikely to invest much in MSMQ but that’s mainly because its feature complete for the job that it does. It is a core part of Windows and has been for many versions but is upgraded in line with each Windows release.
The below diagram gives a simple view of two applications communicating using MSMQ.
The main features of MSMQ are:
- In memory messages
- Persisted messages stored on disk
- Retrieve or peek message
- .net framework support
- HTTP support
- Error Queues
- Active Directory Integration
- Active Directory based Security ACL’s
The key strength of MSMQ is that if your using Microsoft technologies then its easy to interact with MSMQ and its been around for years and is proven to perform well.
The main weakness with MSMQ is that technology in the space it occupies has moved on some what in recent years and Microsoft is investing in Azure & Server Service Bus as its main message queueing technology. MsMQ is also a server product and the opportunity for Service Bus to be both a cloud PaaS and Server technology gives it another reason why Microsoft has changed focus.
MSMQ does not offer the topic feature which modern message queue servers offer.
Again to repeat though that Microsoft has remained committed to supporting MSMQ so if it fits with what your doing and is something you have already invested in then your safe to continue using it.
MSMQ requires you to have a Windows Server to install it on and potentially a cluster for a high availability environment. MSMQ can be used with messages held in memory or on disk so these are also factors which could affect the infrastructure you host it on.
MSMQ is a free component in Windows Server.