• Message queues. Although the term "message-oriented middleware" is currently more popular, this technology has its roots in the message-queuing techniques developed for mainframe access, which itself was asynchronous in nature. These days, message-oriented systems don't necessarily advertise themselves as queuing systems, but they do provide similar guarantees. Hosts can send and deliver messages with various reliability guarantees, including (transactional) persistence, routing via several parties, security properties, and so on. This makes messaging a very versatile basic primitive with which to build systems.
• Publish–subscribe. Pub–sub adds two important concepts to basic messaging: conceptual naming and infrastructure-independent routing. How we route and deliver messages no longer depends on the physical infrastructure but on concepts such as named channels or topics, behind which one or more recipients might be hiding. Systems might conduct additional message filtering on the basis of message content. In pub–sub systems, message delivery depends fully on the actions of the receivers, which frequently are unknown to the senders.