Ovaj repozitorijum sadrži primere za REST (HTTP), Message Queue i RPC komunikaciju. Svi primeri su realizovani u Python programskom jeziku. REST (HTTP) primer koristi Flask web framework, dok Message Queue i RPC primeri koriste RabbitMQ (putem pika
python biblioteke).
- Python 3.x
- RabbitMQ instaliran i pokrenut na
localhost
(ili ažurirajte parametre povezivanja za RabbitMQ umq_client.py
,mq_worker.py
,rpc_client.py
irpc_server.py
).
- Kloniraj repo:
git clone https://github.com/dpavle/komunikacija-demo.git
cd komunikacija-demo
- Kreirajte virtuelno okruženje (opcionalno, ali preporučljivo):
python -m venv venv
source venv/bin/activate # Na Windows-u koristite "venv\Scripts\activate"
- Instalirajte potrebne zavisnosti:
pip install -r requirements.txt
- Pokreni RabbitMQ server:
Proverite da je RabbitMQ instaliran i pokrenut na localhost
. Ako je potrebno, ažurirajte parametre povezivanja za RabbitMQ u mq_client.py
, mq_worker.py
, rpc_client.py
i rpc_server.py
.
REST API vam omogućava:
- Dobavljanje svih zadataka:
GET /api/tasks
- Označavanje zadatka kao završenog:
PUT /api/tasks/<task_id>
-
Zahtev:
GET /api/tasks
-
Odgovor:
[
{"id": 1, "title": "Zadatak 1", "description": "Opis za Zadatak 1", "done": false},
{"id": 2, "title": "Zadatak 2", "description": "Opis za Zadatak 2", "done": true}
]
-
Zahtev: PUT /api/tasks/2
-
Odgovor: HTTP 200 OK
{"message": "Zadatak sa ID 2 je označen kao završen."}
Integracija sa RabbitMQ omogućava asinhronu obradu zadataka. mq_client.py šalje zahteve mq_worker.py-u, a mq_worker.py simulira obradu svakog zahteva asinhrono. Bitno je napomenuti da mq_client.py u ovom scenariju ne čeka odgovor na zahteve koje je poslao.
Pokretanje Message Queue Servera (Worker)
Pokrenite mq_worker.py kako biste omogućili obradu asinhronih zahteva:
python mq_worker.py
Slanje zahteva Message Queue Serveru (Client)
Za slanje zahteva serveru možete koristiti mq_client.py:
python mq_client.py
Implementacija RPC-a koristi RabbitMQ za simuliranje RPC obrasca. rpc_client.py šalje zahteve rpc_server.py-u, a rpc_server.py asinhrono obrađuje svaki zahtev i odgovara klijentu sa statusom traženog zadatka.
Pokrenite rpc_server.py kako biste omogućili obradu RPC zahteva:
python rpc_server.py
Za slanje RPC zahteva serveru možete koristiti rpc_client.py:
python rpc_client.py