Microsoft Message Queuing
Microsoft Message Queuing or MSMQ is a message queue implementation developed by Microsoft and deployed in its Windows Server operating systems since Windows NT 4 and Windows 95. Windows Server 2016 and Windows 10 also includes this component. In addition to its mainstream server platform support, MSMQ has been incorporated into Microsoft Embedded platforms since 1999 and the release of Windows CE 3.0.[1]
Overview
MSMQ is essentially a messaging protocol that allows applications running on separate servers/processes to communicate in a failsafe manner. A queue is a temporary storage location from which messages can be sent and received reliably, as and when conditions permit. This enables communication across networks and between computers, running Windows, which may not always be connected. By contrast, sockets and other network protocols assume that direct connections always exist.
MSMQ has been available to developers on Microsoft platforms since 1997,[2] and has commonly been used in enterprise software built with Visual Studio, both in the native pre-.NET incarnation (version 5 and 6), and in Visual Studio .NET. Microsoft also has incorporated MSMQ in its messaging technology framework, Windows Communication Foundation (WCF). Under WCF, MSMQ can be used for providing secure, reliable transport with a unified programming model compatible with other communications standards.
MSMQ is responsible for reliably delivering messages between applications inside and outside the enterprise. MSMQ ensures reliable delivery by placing messages that fail to reach their intended destination in a queue and then resending them once the destination is reachable. It also supports security and priority based messaging. Dead letter queues can be created for looking at messages which timed out or failed for other reasons.
MSMQ supports both durable and non-durable messaging to make a trade off between performance or consistency by writing messages to disk or only in RAM. Non-durable messaging can only be achieved by sending express messages via non-transactional queues.
MSMQ also supports transactions. It permits multiple operations on multiple queues, with all of the operations wrapped in a single transaction, thus ensuring that either all or none of the operations will take effect. Microsoft Distributed Transaction Coordinator (MSDTC) supports transactional access to MSMQ and other resources to achieve transactional exact once processing.
The following ports are used for Microsoft Message Queuing operations:
- TCP: 1801
- RPC: 135, 2101*, 2103*, 2105*
- UDP: 3527, 1801
- * These port numbers may be incremented by 11 if the initial choice of RPC port is being used when Message Queuing initializes. Port 135 is queried to discover the 2xxx ports.[3]
Version references
- Version 1.0 (May 1997). Supports Windows 95, Windows NT 4.0 SP3, Windows 98 and Windows Me.
- Version 2.0, included with Windows 2000.
- New features include:[4] Support for registering public message queues in Active Directory, 128-bit encryption and digital certificate support, full COM support for message properties (achieving functional parity with the Win32 API function calls, full DNS path name support, improved performance in multi-threaded applications.
- Version 3.0, included with Windows XP (Professional, not Home Edition) and Windows Server 2003.
- New features include:[5] Internet Messaging (referencing queues via HTTP, SOAP-formatted messages, MSMQ support for Internet Information Services), queue aliases, multicasting of messages, and additional support for programmatic maintenance and administration of queues and MSMQ itself.
- Version 4.0, part of Windows Vista and Windows Server 2008.
- Version 5.0, part of Windows 7 and Windows Server 2008 R2.
- Version 6.0, part of Windows 8 and Windows Server 2012.
- Version 6.3, part of Windows 8.1 and Windows Server 2012 R2.
Uses
MSMQ is heavily used in various Windows Platform-based contact center applications which uses this service for internal notifications and services.
See also
- List of Microsoft Windows components
- Java Message Service, similar technology on the Java platform
- Amazon Simple Queue Service, commoditized messaging service provided by Amazon.com for a per-use fee. It allows users to rent access to messaging without having to maintain their own server.
- RabbitMQ, open source message queue broker that implements a pre-standard version of AMQP.[9]
References
- "Microsoft Windows CE 3.0 Message Queuing Service". Microsoft Developer Network. Retrieved 2009-11-25.
- InformationWeek News Connects The Business Technology Community. Informationweek.com (2014-02-04). Retrieved on 2014-02-22. Archived April 10, 2008, at the Wayback Machine
- TCP ports, UDP ports, and RPC ports that are used by Message Queuing. Support.microsoft.com (2011-09-28). Retrieved on 2014-02-22.
- "Cloud Administrator". Azure Cloud Administrator. Dayasagar Roy. Archived from the original on 2018-11-24. Retrieved 2006-08-05.
- "Cloud Administrator". Azure. Dayasagar Roy. Archived from the original on 2018-11-24. Retrieved 2006-08-05.
- "Cloud Administrator". Azure. Dayasagar Roy. Archived from the original on 2018-11-24. Retrieved 2006-08-05.
- Sub-queues in MSMQ 4.0
- "Cloud Administrator". Azure. Dayasagar Roy. Retrieved 2006-08-05.
- "ISO/IEC 19464:2014 - Information technology -- Advanced Message Queuing Protocol (AMQP) v1.0 specification". www.iso.org. Retrieved 2017-11-07.