IBM MQ is a family of message-oriented middleware products that IBM launched in December 1993. It was originally called MQSeries, and was renamed WebSphere MQ in 2002 to join the suite of WebSphere products. In April 2014, it was renamed IBM MQ. The products that are included in the MQ family are IBM MQ, IBM MQ Advanced, IBM MQ Appliance, IBM MQ for z/OS, and IBM MQ on IBM Cloud. IBM MQ also has containerised deployment options. MQ allows independent and potentially non-concurrent applications on a distributed system to securely communicate with each other, using messages. MQ is available on a large number of platforms (both IBM and non-IBM), including z/OS (mainframe), IBM i, Transaction Processing Facility, UNIX (AIX, HP-UX, Solaris), HP NonStop, OpenVMS, Linux, and Microsoft Windows. MQ Components The core components of MQ are: Message: Messages are collections of binary or character (for instance ASCII or EBCDIC) data that have some meaning to a participating program. As in other communication protocols, storage, routing, and delivery information is added to the message before transmission and stripped from the message prior to delivery to the receiving application. Queue: Message queues are objects that store messages in an application. Queue Manager: a system service that provides a logical container for the message queue. It is responsible for transferring data to other queue managers via message channels. Although not strictly required for message-oriented middleware, is an IBM MQ prerequisite. Queue managers handle storage, timing issues, triggering, and all other functions not directly related to the actual movement of data. Programs integrated with IBM MQ use a consistent application program interface (API) across all platforms. Messaging types MQ supports point-to-point and Publish-Subscribe messaging. APIs APIs directly supported by IBM include: IBM Message Queue Interface (MQI) for C, COBOL, PL/I, Java, Rexx, RPG, and C++ Java Message Service (JMS) XMS for C/C++ and .NET .NET Representational State Transfer SOAP Additional APIs (not officially supported) are also available via third parties, including: Perl interface (developed and contributed by Hildo Biersma), available from CPAN. Python (programming language) interface PyMQI (originally developed by Les Smithson), available from PyPI Windows PowerShell Features One-time delivery: MQ uses once and once only delivery. This quality of service typically prevents message loss or duplication. Asynchronous messaging: MQ provides application designers with a mechanism to achieve non-time-dependent architecture. Messages can be sent from one application to another, regardless of whether the applications