Communication is a basic human need. Language allows humans to communicate by forming messages. Messages help with exchange of information as well as ideas. Information helps the human race to survive. Ideas help the human race to collaboratively evolve. It was only natural then for something as simple and essential as messaging to form the bedrock of advancements in information technology.
Messaging for information and ideas
Every piece of software needs to communicate within its ecosystem of existence. From simple remote method invocations to complex streaming data that powers advanced analytics today, it’s hard to imagine a computing world without messaging. As with human needs the basic utility of any software message can be divided into information or ideas. Information that allows a software component like a remote method or web-service to do its job, and ideas that allow complex systems like Machine Learning and AI to evolve.
Evolution in the field of information technology has impacted the way messages are exchanged between software components. From remote procedures being invoked in response to an incoming invocation request to real-time analysis of an endless stream of data. If we look closely we can see software components and complex systems chatting with each other all the time.
Structure of a message
For any message to make sense, it must be understood clearly by sending party as well as receiving party. Message structure needs to be clearly defined and agreed upon by all interested parties.
A message needs to be addressed to somebody. A message needs to indicate in brief what it contains to enable intermediate message processor(s) to decide whether it’s interested in acting upon the message or not. Such information is contained within a construct referred to as header. The payload contains the actual information that was intended to be communicated.
Rules and guidelines for a message
Much like human languages that follow certain constraints, software systems need to abide by the protocols set forth by industry standards. The well researched and widely published rules and guidelines for message exchange ensure that all endpoints as well as intermediate components that transmit or store the messages act in a standard compliant manner thereby minimizing the scope of misinterpretation. The rules and guidelines that govern transmission and storage of an email are different from the protocol governing the transmission and storage of streaming data. All components acting within an ecosystem typically abide by the standard rules and guidelines thereby allowing interoperability as well as extensibility.
Message brokers
Not all humans talk in the same language or follow the same constraints of communication. Similarly, different software components may abide by different protocols. If such components or systems wish to engage in message exchange with each other, a message broker needs to be employed. A message broker translates messages to/from intended protocols thereby promoting interoperability of associated systems.
Message bus
A person using analog communication device usually is unaware if another person he/she is dialing uses an analog device or a digital device. The standard interfaces of the communication infrastructure handle these nuances. Similarly, disparate software systems are usually implemented such that they can communicate via well-known interfaces. A message bus is employed to facilitate communication between such systems.
Message queue
When a person dials another person, the recipient may answer the call or the call may be directed to an automated answering system. Similarly, while architecting resilient systems it’s imperative to assume the supposed unavailability of recipient system and design the message flow in a manner that it can cope with such unavailability. Message queues are employed in such scenario to store the incoming message for consumption by the recipient either immediately or as early as feasible.
Conclusion
The details presented above is just scratching the surface of messaging in information technology. Each section has a textbook of its own. Keep reading as I continue to delve deeper into each topic to further the understanding of a message.