Producer Consumer is a fullstack web application that applying Producer-Consumer Design Pattern with Threads. The Application consists of Machines and Queues that the user can build any system he wants and run to see the simulation of the process over time.
This is Our Fifth Assignment in Design Patterns Course (CSED27 Alexandria University)
- Frontend: React , Konva
- Backend: Spring Boot
- Real-Time Communication: WebSocket
- Singleton Pattern: The Singleton pattern prevents the existence of multiple objects in memory of objects that must only be created once in the system like projectRepository
- Observer Pattern: The Observer pattern allows queues to automatically be notified when a machine’s state changes, ensuring real-time updates without direct interaction.
- Concurrency Pattern: The Concurrency pattern ensures that multiple machines can process tasks simultaneously without causing data inconsistencies. It enhances the system’s efficiency by allowing parallel task execution.
- SnapShot Pattern: The Snapshot pattern saves the system’s state at a start point, allowing it to be restored on restart.

