How harshini-raja/kafka-inspired-distributedmessagequeue works
Purpose and Entry Points
A Kafka-inspired distributed message queue with a Java/Maven backend and React monitoring dashboard. The backend starts from src/main/java/com/distributedQueue/MainClass.java; the browser app starts at DistributedMessageQueue/src/index.js and composes its UI in DistributedMessageQueue/src/App.js. Deployment is container-oriented through Docker-compose.yml.
Core Queue Domain
The queue model is organized around topics, partitions, messages, and in-memory/message-queue coordination. src/main/java/com/distributedQueue/Core/TopicManager.java owns topic-level management, while src/main/java/com/distributedQueue/Core/Topic.java and src/main/java/com/distributedQueue/Core/Partition.java represent routing/storage boundaries. src/main/java/com/distributedQueue/Core/Message.java defines the message payload model and src/main/java/com/distributedQueue/Core/MessageQueue.java coordinates queue behavior.
Controller and REST Boundary
src/main/java/com/distributedQueue/Controllers/Controller.java is the backend control/API boundary used to expose queue operations and operational state. JSON-facing type conversion is separated in src/main/java/com/distributedQueue/Adapters/MessageAdapter.java and src/main/java/com/distributedQueue/Adapters/InstantTypeAdapter.java, insulating core models from wire serialization concerns.
Distributed Roles and Message Flow
Producers publish messages through src/main/java/com/distributedQueue/Producers/Producer.java; messages are assigned to topics/partitions managed by the core layer. Brokers in src/main/java/com/distributedQueue/Brokers/Broker.java host or coordinate partition work. Consumers pull/process messages through src/main/java/com/distributedQueue/Consumers/Consumer.java, with src/main/java/com/distributedQueue/Consumers/ConsumerThread.java providing concurrent consumption execution.
Cluster Metadata and Coordination
Partition ownership/leader-related state is represented by src/main/java/com/distributedQueue/Metadata/PartitionMetadata.java. Broker-to-broker coordination is modeled in src/main/java/com/distributedQueue/Protocols/GossipProtocol.java, making metadata propagation and broker health a distinct distributed-systems boundary rather than part of producer/consumer code.
Observability and Dashboard
Operational events are captured through src/main/java/com/distributedQueue/Logging/LogMessage.java and persisted/accessed via src/main/java/com/distributedQueue/Logging/LogRepository.java. The React dashboard uses DistributedMessageQueue/src/services/Api.js for backend access and presents cluster state in DistributedMessageQueue/src/components/Dashboard.js, broker status in DistributedMessageQueue/src/components/Broker.js, topic/leader information in DistributedMessageQueue/src/components/Topics.js, and producer/consumer logs in their respective components.
Runtime and Infrastructure
The backend runs on Java with Maven (pom.xml); the frontend is a separate Node/React package (DistributedMessageQueue/package.json) using Axios. Docker defines separate controller, broker, producer, and consumer images in Dockerfile.controller, Dockerfile.broker, Dockerfile.producer, and Dockerfile.consumer, orchestrated by Docker-compose.yml. This indicates the distributed roles are intended to run as independently containerized processes.
Main entry points: Controller.java Controller API · Docker-compose.yml Container Orchestration · Broker.java Broker · Producer.java Producer
Components 18
Java Backend
- Backend Entry
src/main/java/com/distributedQueue/MainClass.java - Controller API
src/main/java/com/distributedQueue/Controllers/Controller.java - JSON Adapters · Converts messages and instants at the wire boundary.
src/main/java/com/distributedQueue/Adapters/MessageAdapter.java - Log Repository
src/main/java/com/distributedQueue/Logging/LogRepository.java
Queue Core
- Topic Manager
src/main/java/com/distributedQueue/Core/TopicManager.java - Topics & Partitions
src/main/java/com/distributedQueue/Core/Topic.java - Message Queue
src/main/java/com/distributedQueue/Core/MessageQueue.java - Message
src/main/java/com/distributedQueue/Core/Message.java
Distributed Cluster
- Producer
src/main/java/com/distributedQueue/Producers/Producer.java - Broker
src/main/java/com/distributedQueue/Brokers/Broker.java - Consumer
src/main/java/com/distributedQueue/Consumers/Consumer.java - Consumer Thread
src/main/java/com/distributedQueue/Consumers/ConsumerThread.java - Partition Metadata
src/main/java/com/distributedQueue/Metadata/PartitionMetadata.java - Gossip Protocol
src/main/java/com/distributedQueue/Protocols/GossipProtocol.java
React Dashboard
- Dashboard Entry
DistributedMessageQueue/src/index.js - Monitoring Dashboard · Shows cluster, broker, topic, and role logs.
DistributedMessageQueue/src/components/Dashboard.js - API Client
DistributedMessageQueue/src/services/Api.js
Other components
- Container Orchestration · Runs controller, broker, producer, and consumer roles separately.
Docker-compose.yml
Connections 21
- Backend Entry → Controller API: starts
- Controller API → JSON Adapters: serializes
- Controller API → Topic Manager: queue operations
- Controller API → Log Repository: operational state
- Topic Manager → Topics & Partitions: manages
- Topics & Partitions → Message Queue: routes through
- Producer → Message: publishes
- Producer → Topic Manager: targets topic
- Broker → Message Queue: hosts work
- Broker → Partition Metadata: uses ownership
- Gossip Protocol → Partition Metadata: propagates state
- Gossip Protocol → Broker: coordinates
- Consumer Thread → Consumer: executes
- Consumer → Message Queue: pulls messages
- Dashboard Entry → Monitoring Dashboard: mounts
- Monitoring Dashboard → API Client: requests state
- API Client → Controller API: REST calls
- Container Orchestration → Controller API: runs controller
- Container Orchestration → Broker: runs broker
- Container Orchestration → Producer: runs producer
- Container Orchestration → Consumer: runs consumer