This project was created using the Ktor Project Generator.
Here are some useful links to get you started:
- Ktor Documentation
- Ktor GitHub page
- The Ktor Slack chat. You'll need to request an invite to join.
Here's a list of features included in this project:
Name | Description |
---|---|
Routing | Allows to define structured routes and associated handlers. |
To build or run the project, use one of the following tasks:
Task | Description |
---|---|
./gradlew test |
Run the tests |
./gradlew build |
Build everything |
buildFatJar |
Build an executable JAR of the server with all dependencies included |
buildImage |
Build the docker image to use with the fat JAR |
publishImageToLocalRegistry |
Publish the docker image locally |
run |
Run the server |
runDocker |
Run using the local docker image |
If the server starts successfully, you'll see the following output:
2024-12-04 14:32:45.584 [main] INFO Application - Application started in 0.303 seconds.
2024-12-04 14:32:45.682 [main] INFO Application - Responding at http://0.0.0.0:8080
docker-compose up --build
🔹 Scenario: Coffee Shop Order System 1️⃣ Customers place orders at the counter → RabbitMQ queues the order for processing. 2️⃣ The barista (order processor) prepares the coffee → RabbitMQ delivers the order to the barista. 3️⃣ Customers wait → They can check their phone (via WebSocket) to see if their order is ready. 4️⃣ Once an order is ready → The system sends a WebSocket notification to the customer.
Real-Life Coffee Shop ☕ | Tech Equivalent 🔥 |
---|---|
🛒 Customer places an order at the counter | RabbitMQ Producer sends the order to a queue |
👨🍳 Barista (order processor) prepares coffee | RabbitMQ Consumer listens and processes the order |
📲 Customer checks app for order updates | WebSocket connection stays open |
✅ Order is ready, customer is notified | WebSocket message is sent to the client |
📦 If customer is not online, order is still ready | RabbitMQ holds messages until a consumer picks them up |