Introduction to IBM MQ

You can use IBM® MQ to enable applications to communicate at different times and in many diverse computing environments.

What is IBM MQ?

IBM MQ supports the exchange of information between applications, systems, services and files by sending and receiving message data via messaging queues. This simplifies the creation and maintenance of business applications. IBM MQ works with a broad range of computing platforms, and can be deployed across a range of different environments including on-premise, in cloud, and hybrid cloud deployments. IBM MQ supports a number of different APIs including Message Queue Interface (MQI), Java™ Message Service (JMS), REST, .NET, IBM MQ Light and MQTT.

IBM MQ provides:
  • Versatile messaging integration from mainframe to mobile that provides a single, robust messaging backbone for dynamic heterogeneous environments.
  • Message delivery with security-rich features that produce auditable results.
  • Qualities of service that provide once and once only delivery of messages to ensure messages will withstand application and system outages.
  • High-performance message transport to deliver data with improved speed and reliability.
  • Highly available and scalable architectures to support an application’s needs.
  • Administrative features that simplify messaging management and reduce time spent using complex tools.
  • Open standards development tools that support extensibility and business growth.

An application has a choice of programming interfaces, and programming languages to connect to IBM MQ.

IBM MQ provides these messaging and queuing capabilities across multiple modes of operation: point-to-point ; publish/subscribe.
Messaging
Programs communicate by sending each other data in messages rather than by calling each other directly.
Queuing
Messages are placed on queues, so that programs can run independently of each other, at different speeds and times, in different locations, and without having a direct connection between them.
Point-to-point
Applications send messages to a queue and receive messages from a queue. Each message is consumed by a single instance of an application. The sender must know the name of the destination, but not where it is.
Publish/subscribe
Applications subscribe to topics. When an application publishes a message on a topic, IBM MQ sends copies of the message to those subscribing applications. The publisher does not know the names of subscribers, or where they are.

What can it do for me?

IBM MQ provides a universal messaging backbone with robust connectivity for flexible and reliable messaging for applications and the integration of existing IT assets using a service-oriented architecture (SOA).
  • IBM MQ sends and receives data between your applications, and over networks.
  • Message delivery is assured and decoupled from the application. Assured, because IBM MQ exchanges messages transactionally, and decoupled, because applications do not have to check that messages they sent are delivered safely.
  • You can secure message delivery between queue managers with TLS.
  • With Advanced Message Security (AMS), you can encrypt and sign messages between being put by one application and retrieved by another.
  • Application programmers do not need to have communications programming knowledge.

How do I use it?

An IBM MQ messaging system is made up of one or more queue managers. Queue managers are where messaging resources, such as queues, are configured and what applications connect to, either running on the same system as the queue manager or over the network.

A network of connected queue managers supports asynchronous routing of messages between systems, where producing and consuming applications are connected to different queue managers.

IBM MQ can be managed using a variety of tools, from the IBM MQ Explorer GUI, through scripted or interactive command line tools or programmatically.

The applications connecting to IBM MQ can be written in any one of many different programming languages and to many different APIs. From C and Cobol, to Java and .Net to NodeJS and Ruby.

How does it work?

Here is a brief overview of how IBM MQ works.
  • First a messaging application must connect to a queue manager. This may require a channel to be created on the queue manager to accept application connections.
  • When your application wants to transfer data to another application, it creates a message and puts the data into it. It puts the message onto a queue, or publishes the message to a topic to be delivered to subscribers to the topic.
  • The queue or subscriptions may be on the same queue manager or on other, connected, queue managers. If the latter the connected queue managers work together to reliably transfer the message from the producer’s queue manager to the target queue managers. The applications do not communicate with each other, the queue managers do.
  • Messages can be handled based on a number of different qualities of service, where reliability and persistence is traded for speed. The highest quality of service given to messages are persistent messages that are sent and received under the control of transactions. This will ensure that messages are delivered once and once only even in the event of system, network or application failures.
  • IBM MQ channels are used to connect one queue manager to another over a network. You can create MQ channels yourself, or a queue manager can join a cluster of queue managers where MQ channels are automatically created when they are needed.
  • [z/OS]On z/OS®, you can configure multiple queue managers to share queues on the coupling facility. Applications connected to different queue managers can get and put messages to and from the same queues.
  • You can have many queues and topics on one queue manager.
  • You can have more than one queue manager on one computer.
  • An application can run on the same computer as the queue manager, or on a different one. If it runs on the same computer, it is an IBM MQ server application. If it runs on a different computer, it is an IBM MQ client application. Whether it is IBM MQ client or server makes almost no difference to the application. You can build a client/server application with IBM MQ clients or servers.

[Windows]If you are new to using IBM MQ and want to find out more about getting started with IBM MQ, see LearnMQ on IBM Developer.

What tools and resources come with IBM MQ ?

IBM MQ provides the following tools and resources:
  • Control commands, which are run from the command line. You create, start, and stop queue managers with the control commands. You also run IBM MQ administrative and problem determination programs with the control commands.
  • IBM MQ script commands (MQSC), which are run by an interpreter. Create queues and topics, configure, and administer IBM MQ with the commands. Edit the commands in a file, and pass the file to the runmqsc program to interpret them. You can also run the interpreter on one queue manager, which sends the commands to a different computer to administer a different queue manager.
  • The Programmable Command Format (PCF) commands, which you call in your own applications to administer IBM MQ. The PCF commands have the same capability as the script commands, but they are easier to program.
  • [V9.1.0 Jul 2018]The IBM MQ Console is a web-based user interface that you can use to administer IBM MQ. The IBM MQ Console runs in a browser and provides control over queue managers and IBM MQ objects.
  • [V9.1.0 Jul 2018]The REST API provides an alternative programmable interface to the existing IBM MQ Script Commands (MQSC) and Programmable Command Format (PCF) tools. This RESTful API can help you to embed IBM MQ administration into popular DevOps and automation tooling.
  • Sample programs.
  • On Windows and Linux® x86 and x86-64 platforms, you can use the IBM MQ Explorer to administer and configure the entire network of queue managers, irrespective of the platform that they are running on. IBM MQ Explorer does the same administrative tasks as the script commands, but is much easier to use interactively.