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)
Check out your Company Bowl for anonymous work chats.