Introduction to IBM MQ

We 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 ; file transfer ; telemetry.

    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.

    File transfer
    Files are transferred in messages. Managed File Transfer manages the transfer of files and the administration to set up automated transfers and log the results.

    Telemetry
    MQ Telemetry provides an IBM MQ Telemetry Transport (MQTT) server that extends your IBM MQ environment to the Internet of Things - that is, the numerous mobile, web and M2M devices and applications that sit at the edge of the network.


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 our 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.
  • We can secure message delivery between queue managers with TLS.
  • With Advanced Message Security (AMS), we 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 our 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. We 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.
  • On z/OSĀ®, we 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.
  • We can have many queues and topics on one queue manager.
  • We 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. We can build a client/server application with IBM MQ clients or servers.

If you are new to using IBM MQ, see Get started with IBM MQ in the Scenarios section of this documentation.


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. We 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. We 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.
  • Sample programs.
  • On Windows and Linux x86 and x86-64 platforms, we can use the following utilities:

    • The IBM MQ Explorer. We 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.
    • The Postcard application to demonstrate messaging and verify your installation.
    • Tutorials.