Design Pub Sub System
| Difficulty: Medium | Source: awesome-low-level-design |
Requirements
- Publishers publish messages to specific topics
- Subscribers subscribe to topics and receive messages
- Multiple publishers and subscribers
- Real-time message delivery
- Handle concurrent access, thread safety
- Scalable and efficient
Class Diagram

Classes, Interfaces and Enumerations
| Class/Interface | Description |
|---|---|
| Message | content |
| Topic | set of subscribers; methods to add/remove subscribers and broadcast messages |
| Subscriber | Interface with onMessage method |
| PrintSubscriber | Concrete subscriber; prints received messages to console |
| Publisher | Sends messages to a topic |
| PubSubSystem | Central manager; ConcurrentHashMap + ExecutorService for async delivery |
Design Patterns Used
| Pattern | Application |
|---|---|
| Observer | Topics notify all registered subscribers when a new message is published |
| Interface-based Abstraction | Subscriber interface allows any class to receive messages by implementing onMessage |
Code Implementations
| Language | Source Code |
|---|---|
| Java | View on GitHub |
| Python | View on GitHub |
| C++ | View on GitHub |
| C# | View on GitHub |
| Go | View on GitHub |