IBM MQ is a robust, reliable, and secure messaging solution. It simplifies and accelerates the integration of different applications across multiple platforms, and it supports a wide range of APIs and languages.
IBM MQ enables applications to communicate and exchange data in a reliable and scalable way, that decouples one application from another. In this way, MQ assists the integration of applications running in different frameworks, languages, platforms, clouds and locations. You can write applications how you want, in the knowledge that you can rely on MQ to smooth out the problems and join them together.
IBM MQ allows the server infrastructure to span the data center, mainframe, and cloud frameworks. IBM MQ, implemented as both software and hardware, provides enterprise strength communication between independent applications. What’s more, it reduces the complexity of developing those applications.
How does IBM MQ simplify communication between applications?
To place a messaging infrastructure between two or more applications means that the applications are not communicating directly. In fact, they interact through the middleware.
More specifically, one application places information for the other in a message, which is put on a message queue.
As a result, messaging does not require applications to be available at the same time, as the queue provides availability. This model is known as asynchronous messaging.
Whether one application goes away, or whether it is just slower than the other one, message queueing provides a “shock absorber” by dealing with the instability of both sides.
The basics of IBM MQ
Let’s look at some of the key concepts for understanding IBM MQ.
Messages, queues, and channels
Messages are packages of data that are produced and consumed by applications.
Queues are addressable locations to deliver messages to and store them reliably until they need to be consumed.
Queue managers are the MQ servers that host the queues.
Channels are the way queue managers communicate with each other and with the applications.
MQ networks are loose collections of interconnected queue managers, all working together to deliver messages between applications and locations.
MQ clusters are tight couplings of queue managers, enabling higher levels of scaling and availability.
IBM MQ messaging styles
IBM MQ supports these messaging styles:
- Point-to-point messaging
- Publish/subscribe messaging
This style of messaging is built around the concept of message queues, and around the processing of messages by a single consumer.
In point-to-point, message producers are called senders and message consumers are called receivers. Senders produce messages to a queue, and receivers asynchronously consume messages from that queue.
For point-to-point to work, connected applications need to know the name of the queue through which they interact.
A queue could have a single receiver or be scaled to many, in which case each message is only consumed by one receiver, distributing the workload across them all.
In this style of messaging, copies of messages will be delivered to all interested consuming applications.
The producer of a message is known as a publisher, and message consumers are known as subscribers. The publishing and subscribing applications within the infrastructure agree on the name of a topic. For a consumer to signal that they want to receive messages on that topic, they create a subscription to it.
Any message published to a topic will be delivered to all the subscriptions, so every subscriber gets a copy. There could be many publishers and many subscribers to each topic, MQ handles the delivery of messages between all of them.
IBM MQ language support and capabilities
Whatever language or runtime you wish to develop with, MQ probably supports it. Here are the supported languages and runtimes:
MQ supports numerous APIs:
MQ also supports numerous messaging protocols:
MQ also covers numerous operating environments:
So, what do you need to remember about IBM MQ? These three key benefits:
MQ provides assured delivery of data. Loss or duplication of information may result in critical issues. Think about a bank transfer or a transaction: for those you want exactly once delivery of messages. MQ is the world leader in making sure data isn’t lost or duplicated when you don’t want it to be. This is assured through the proven reliability of MQ systems and the ability to integrate those critical messages into transactional exchanges.
MQ is horizontally scalable. As the workload for a single queue manager increases, it is easy to add more queue managers to share tasks and distribute the messages across them. MQ Clusters will even intelligently route messages to where they’re needed. The world is full of horizontally scaled MQ systems that handle billions of messages a day.
MQ is highly available. The message data is the important thing and MQ ensures it is always highly available by giving you ways to replicate that data between systems and to automatically restart the queue managers that host those messages elsewhere. Couple that with a closely clustered group of queue managers that provide the same queues and topics, and you have a continuously available system.