Asynchronous Communication
Asynchronous communication is an exchange of messages
between two components in which the requsitioner does not await the delivery of
the response. In practice, it implies that the thread of execution is not
blocked pending the arrival of a response.
In the event, a mechanism usually exists to enable
the target component of returning the response. This is best illustrated in the
case of Java Message Service (see JMS), where the return address is a common
message server, a queue or a topic.
In this mode of communication, there is a measurable
time interval between the sending and receiving of the content of any message
(see Message). Message-Oriented Middleware (see MOM) is typically implemented
based on this concept by introducing message queues that queue (persists)
messages sent by a system until they are accepted by the receiving system(s).
Note that asynchronous messaging facilitates looser
coupling between components (see Loose Coupling) to the extent that a target of
a request need not be even active at the time the request was dispatched.
Asynchronous messages are more efficient than
synchronous messages and are the recommended style of exchange, although,
synchronous messages are required in specific circumstances.