See PublishSubscribeModel [EditHint: Suggest merge!] See Also: MultiCaster and ObserverPattern. ---- PublishAndSubscribe is one of the MessagingPatterns. It allows N-to-M communication. Each communicating party acts as a publisher, a subscriber or both. When a ''publisher'' sends a message and all registered ''subscribers'' receive it. PublishAndSubscribe is often shortened to "pub-sub". The simplest form of pub-sub uses topics to identify published information. Publishers send messages to a named topic. Receivers connect to a named topic in order to receive messages. The pub-sub system itself gives no guarantees as to which types of message are transmitted on which topic. That is left to higher level protocols agreed between the publishers and subscribers. Examples of messaging systems that support topic-based pub-sub are Tibco Rendezvous, Websphere MQ, and JMS implementations such as Tibco EMS. Modern pub-sub systems use ContentBasedAddressing (also known as ContentBasedMulticast). Receivers subscribe by describing the content of the messages that they wish to receive and the messaging infrastructure routes matching messages to the appropriate subscribers. Examples include Elvin, IBM's Gryphon, Siena and Babble. ---- Pub-sub systems may implement StoreAndForward and XaTransactions to provide OnceAndOnlyOnceDeliverySemantics. For example, Websphere MQ and Tibco EMS provide OnceAndOnlyOnceDeliverySemantics, while Tibco Rendezvous provides BestEffortDeliverySemantics. In StoreAndForward pub-sub systems, there are two kinds of subscriber: * "Normal" subscribers * Durable subscribers A normal subscriber receives messages that are sent while it is listening. A durable subscriber is associated with a store in the message broker. The message broker stores messages for the durable subscriber while it is offline and delivers them when the subscriber comes back online. ---- The JavaMessagingService (JMS) API supports PublishAndSubscribe with named topics and has a simple form of ContentBasedAddressing. ---- External Links: * http://www.openajax.org/member/wiki/OpenAjax_Hub_Specification_v10_PublishSubscribe ----