Question d’entretien chez Andersen Lab

Code: Q2. Practical Task: Design a Distributed Message Queue You are tasked with designing and implementing a distributed message queue in Java. This message queue must support the following features: 1. Producer/Consumer Pattern: Multiple producers should be able to add messages, and multiple consumers should be able to consume messages concurrently. 2. Message Ordering: Ensure that the messages are consumed in the order they were produced, but only once. 3. High Availability: Implement fault tolerance mechanisms to ensure messages are not lost if a node in the system fails. 4. Scalability: The system should handle a large number of producers and consumers without severe performance degradation. Provide a high-level implementation of the core components (e.g., Producer, Consumer, Broker) and explain the design decisions you made (e.g., thread safety, use of data structures, and synchronization mechanisms)