Participants in asynchronous messaging rely upon the initial message being received, even though the intended recipient may be out of the office or otherwise simply not available. Similarly, the recipient may respond without the message originator being present or available. Email is probably the best example of asynchronous messaging used worldwide.
One major advantage of asynchronous messaging is its scalability. A short message may be sent with a very lengthy reply or vice versa. A request for a sizeable text document as an attachment would emphasize the benefits of scalability even further.
Asynchronous messaging solves the problem of intermittent connectivity. Also, if the receiving equipment fails or is unavailable, the message may remain in a message queue and be delivered as soon as the failure is corrected.
An asynchronous messaging system with built-in intelligence may change the content and/or format of the message automatically to conform to another software application or needed protocol, but still successfully deliver the message to the recipient.
Disadvantages of asynchronous messaging include the additional component of a message broker or transfer agent to ensure the message is received. This may affect both performance and reliability. A more obvious disadvantage is the requirement to wait for a response, which may be inconvenient and certainly not consistent with normal dialog communication.
Lack of standards for asynchronous messaging has caused problems, with each major vendor having its own implementations, interface and management tools. Java EE systems are not interoperable. And Microsoft’s MSMQ (Microsoft Message Queuing) does not support Java EE.
Advanced Message Queuing Protocol (AMQP) is an emerging technology addressing the standardization problem. Implementations are interoperable. It includes flexible routing and common message paradigms like publish/subscribe, point-to-point, request-response and fanout. And some Java applications also use AMQP.