Publish–subscribe is a sibling of the message queue paradigm, and is typically one part of a larger message-oriented middleware system.
The broker normally performs a store and forward function to route messages from publishers to subscribers.
In GUI systems, subscribers can be coded to handle user commands (e.g., click of a button), which corresponds to build time registration.
The publisher and the subscribers cache this information locally and route messages based on the discovery of each other in the shared cognizance.
In effect, brokerless architectures require publish/subscribe system to construct an overlay network which allows efficient decentralized routing from publishers to subscribers.
It was shown by Jon Kleinberg that efficient decentralised routing requires Navigable Small-World topologies.
A common strategy used by middleware analysts with such pub/sub systems is to take down a publisher to allow the subscriber to work through the backlog (a form of bandwidth throttling).
Pub/sub provides the opportunity for better scalability than traditional client-server, through parallel operation, message caching, tree-based or network-based routing, etc.
However, in certain types of tightly coupled, high-volume enterprise environments, as systems scale up to become data centers with thousands of servers sharing the pub/sub infrastructure, current vendor systems often lose this benefit; scalability for pub/sub products under high load in these contexts is a research challenge.
Outside of the enterprise environment, on the other hand, the pub/sub paradigm has proven its scalability to volumes far beyond those of a single data center, providing Internet-wide distributed messaging through web syndication protocols such as RSS and Atom.
However, as the number of nodes and messages grows, the likelihood of instabilities increases, limiting the maximum scalability of a pub/sub network.