Design: Message Queue System Comparison
Compare three popular message queue systems: Apache Kafka, RabbitMQ, and AWS SQS. Focus on their architecture, use cases, strengths, and limitations. Out of scope: detailed installation or configuration steps.
Functional Requirements
FR1: Support asynchronous communication between distributed components
FR2: Handle high throughput of messages
FR3: Ensure message durability and reliability
FR4: Support message ordering where needed
FR5: Provide scalability to handle increasing load
FR6: Allow multiple consumers to process messages
FR7: Support different delivery guarantees (at least once, exactly once, at most once)
Non-Functional Requirements
NFR1: Latency for message delivery should be under 100ms for typical use cases
NFR2: System should handle at least 100,000 messages per second
NFR3: Availability target of 99.9% uptime
NFR4: Support integration with cloud and on-premise environments