How chengchengchenchen/distributed-publisher-subscriber-system works
DPSS is a distributed publisher–subscriber system: publishers create topics and publish messages through a selected broker; subscribers discover topics, subscribe, and manage subscriptions through a broker. Brokers register with a directory service and share broker membership; the sampled broker excerpt also shows message propagation across brokers. Topic, message, and participant records provide the internal data model. The README is only a title, and BrokerImpl excerpts omit some method bodies, so uncertain delivery and forwarding links are not drawn.
Main entry points: BrokerImpl.java Broker runtime · PublisherServer.java Publisher commands · DirectoryServiceImpl.java Directory service · SubscriberServer.java Subscriber commands
Components 19
Publisher and subscriber clients
- Publisher commands
DPSS/src/main/java/Publisher/PublisherServer.java - Publisher endpoint
DPSS/src/main/java/Publisher/PublisherImpl.java - Subscriber commands
DPSS/src/main/java/Subscriber/SubscriberServer.java - Subscriber endpoint
DPSS/src/main/java/Subscriber/SubscriberImpl.java - Publisher RMI endpoint
DPSS/src/main/java/Publisher/PublisherInterface.java - Subscriber RMI endpoint
DPSS/src/main/java/Subscriber/SubscriberInterface.java
Directory coordination
- Directory service
DPSS/src/main/java/Directory/DirectoryServiceImpl.java - Directory RMI contract
DPSS/src/main/java/Directory/DirectoryService.java - Directory server
DPSS/src/main/java/Directory/DirectoryServiceServer.java
Broker services
- Broker runtime
DPSS/src/main/java/Broker/BrokerImpl.java - Broker RMI contract
DPSS/src/main/java/Broker/BrokerInterface.java - Broker server
DPSS/src/main/java/Broker/BrokerServer.java
Shared domain model
- Broker record
DPSS/src/main/java/Utils/Broker.java - Publisher record
DPSS/src/main/java/Utils/Publisher.java - Subscriber record
DPSS/src/main/java/Utils/Subscriber.java - Topic model
DPSS/src/main/java/Utils/Topic.java - Message model
DPSS/src/main/java/Utils/Message.java
Other components
- Publisher user
- Subscriber user
Connections 26
- Publisher user → Publisher commands: enters commands
- Subscriber user → Subscriber commands: enters commands
- Publisher commands → Directory service: gets brokers
- Subscriber commands → Directory service: gets brokers
- Directory server → Directory service: binds service
- Directory service → Directory RMI contract: implements
- Publisher commands → Broker runtime: creates, publishes, deletes
- Publisher commands → Broker runtime: gets topic details
- Subscriber commands → Broker runtime: lists, subscribes
- Subscriber commands → Broker runtime: reads and changes subscriptions
- Broker server → Broker runtime: starts runtime
- Broker runtime → Broker RMI contract: implements
- Broker runtime → Directory service: registers and retrieves peers
- Directory service → Broker runtime: notifies new peer
- Broker runtime → Broker runtime: broadcasts published message
- Publisher commands → Publisher endpoint: registers endpoint
- Subscriber commands → Subscriber endpoint: registers endpoint
- Broker runtime → Subscriber endpoint: checks liveness
- Broker runtime → Publisher endpoint: checks liveness
- Publisher commands → Topic model: creates topic
- Publisher commands → Message model: constructs message
- Broker runtime → Broker record: tracks peers
- Broker runtime → Publisher record: tracks publishers
- Broker runtime → Subscriber record: tracks subscribers
- Broker runtime → Topic model: tracks topics
- Broker runtime → Message model: broadcasts message data