There are different ways for applications to talk to one another. These can include:
- File Transfer
- Web Services
- Shared Data
All have their strengths and weaknesses but for now let’s focus on the advantages of messaging.
What is messaging? Messaging is a technology that enables asynchronous communication of messages between systems and also includes reliable delivery. A message is a data structure that has a header and a body. The header contains information about the message and the body contains the business specific information used by the two systems.
Messages are placed on queues (aka message queues) by the sending system and taken off queues by the receiving system. The queues are created for that particular integration by an administrator of the messaging system.
Figure 1: Simple Integration with Messaging
There are some real benefits to implementing messaging for sharing data between systems. Some of these include:
- Asynchronous communication. This means that the sender of the message does not have to wait to see if the receiver of the message actually got it. The advantage here is that if the receiving system happens to not be available, the sending system can continue to send the messages. The messages will be stored on the queue and when the receiving system comes back online it will begin to process those messages.
- Scalability. This can be accomplished by adding additional components on the receiving end. The messaging system can guarantee that each message will picked up by only one of those receivers. We call this point to point messaging. I’ll discuss other types of message patterns in another blog.
- Reliable delivery. This comes into play when either the sending or receiving system goes down. As long as the messages have been successfully added to the queue then it will stay there until the receiving system picks it up. Notice I called it reliable and not guaranteed. There is always a slim chance that some link in the chain may fail (e.g. the backing disk storage) but that very rarely happens.
Of course there are other benefits. With messaging you can integrate any type of application that can talk to a queue. This means that mainframe, Unix and Windows-based systems can pass data back and forth without knowing or caring what technology each other endpoint was written in. Related to that is the term “loosely coupled” which you’ve probably heard before. Coupling describes how much one system knows about another when communicating. Loose coupling means two systems don’t know much about each other whereas tight coupling means each system embeds is a lot of knowledge and assumptions about the others’ inner workings. If there is a lot of knowledge or the systems are directly integrated with each other, when one system changes there is a good chance the other system has to change too. That of course is not ideal. With messaging, the systems are totally separate and only data is passed between them.
Hopefully this has shed some light on the benefits to messaging when integrating applications. If you found this useful, you might want to read our article on file transmissions.