Queue-based transmissions also known as messaging, middleware messaging or asynchronous messaging, can be understood as an architecture of a distributed system where it represents the middle layer. They are being employed as a complete and secure solution for transferring data in a fast and smooth manner between different components of a system, that will further process the data. Messaging is also understood as asynchronous messaging, a concept in which the two actuators of the queue-based transmissions- the sender and the receiver, are completely decoupled from one another, thanks to the messaging solution employed in the transmission of data, which handles the data that is being transmitted through logical objects that store the data, named queues.
A messaging solution, commonly known as message-oriented middleware, is a software or hardware infrastructure that makes queue-based transmissions possible, by sending the data as a message between distributed systems. The concept of messaging has been applied and developed into various software and hardware solutions. The most popular are the software solution IBM MQ (currently in version 9) and the hardware solution IBM MQ Appliance. Let’s learn about the IBM MQ fundamentals
In the figure below we can observe how the Sender application handles the message to the message-oriented middleware and it is being passed further to the Target application.
Fig. 1 – Queue-based transmissions: point-to-point
Message-oriented middleware employs several paradigms for transferring the data and the most common are the point-to-point and publish-subscribe paradigms.
Data is being transferred from one application to another. The logical link is performed by the message-oriented middleware between two applications only, as presented in Fig.1 : the sender and the receiver.
Messages (data) are transferred from one or many publishers to one or many subscribers, as shown in the Fig.2 below
Fig. 2 – Publish-subscribe paradigm – many to many transmissions
IBM MQ implements the usage of essential logical objects for making data transmission possible. For a simple point-to-point communication, between two applications, the necessary objects are the following:
- A queue manager, which is the main object within a message-oriented middleware solution. Queue managers administer the resources associated with them, they provide queuing services to the applications and manage all connections to and from the queue manager. Seen from the perspective of a client/server paradigm, the queue manager is the server therefore it can be invoked inside a network by its name. Queue managers are the logical container that include all the necessary resources for asynchronous communications. In some MOM distributions, for instance IBM MQ, they are also referred to as IBM MQ servers.
- Channels are logical communication links established between two queue managers or between a client and a queue manager.
- Queues are logical objects within a queue manager, on which applications can put messages and from which they read messages. If the receiving application is offline, data transmission will still be online, as the messages will be temporarily stored in the queue residing in the destination queue manager, until the configured limits are met
- Messages are strings of data in any format written by an application onto a queue that resides in a queue manager. The connection between the application and the queue manager is performed via a communication link called a channel. Messages represent the reason for existence of asynchronous messaging since it represents the data that needs to be transmitted to the destination. Messages consist of two main parts: the message header (special attributes necessary for their transmission via queue-based systems) and the payload (the actual data that is being transmitted). In the figure below, we have a sample of a message transmitted from one queue manager to another, via IBM MQ.
These crucial components can all be observed in Fig.3: the messages are labeled as 1 and 2, the queue managers as Qmanager A and Qmanager B and lastly, the queues and the channels.
Fig. 3 – Elements of a point-to-point transmission via IBM MQ
In a publish-subscribe paradigm, there are new components, however the principle is still the same. Instead of publishing onto a queue, the senders publish onto an object called a topic that routes messages to the system interested in receiving. Applications that desire to receive those messages, manifest their interest via a logical object called a subscription which basically sends to the message router the name of the queue where the target application will wait for its message.
In short, asynchronous messaging systems and in this case, IBM MQ, comply with four essential elements:
- ensure a reliable message delivery
- support various messaging patterns or paradigms like point-to-point or publish/subscribe
- ensure a distribution system that routes and delivers messages
- support for message formats as stream, bytes and text
To be continued in the lessons to come.