Design Message Queue
Implement a message queue system
Overview
Design an in-memory Message Queue (like simple Kafka or RabbitMQ) supporting Publish-Subscribe and Point-to-Point architectures.
Key Concepts
Entities: Topic, Queue, Producer, Consumer
Observer Pattern: Push messages to consumers
Concurrency: Multithreaded message delivery without locks holding up producers