WebSphere MQ is messaging and queuing middleware from IBM that allows applications to communicate asynchronously by sending messages to queues. It provides guaranteed message delivery, decoupling of sending and receiving applications, and publish/subscribe capabilities. Programs using the MQ API can connect to queue managers to put and get messages from queues without having direct connections to each other. Messages have properties and data, and can be persistent or non-persistent. Queues store messages and allow parallel access by multiple applications.