Differences

This shows you the differences between two versions of the page.

Link to this comparison view

isi:laboratoare:07 [2025/11/15 20:08]
alexandru.predescu
isi:laboratoare:07 [2025/11/21 12:52] (current)
stefanel.turcu
Line 167: Line 167:
 Pași pentru conectarea la RabbitMQ folosind Python Pași pentru conectarea la RabbitMQ folosind Python
  
-**1. Instalarea ​Bibliotecii ​pika**+**1. Instalarea ​bibliotecii ​pika**
  
 Asigură-te că ai instalat biblioteca ''​pika''​. Poți face acest lucru rulând următoarea comandă: Asigură-te că ai instalat biblioteca ''​pika''​. Poți face acest lucru rulând următoarea comandă:
Line 308: Line 308:
 print(f"​Exchange-ul '​{exchange_name}'​ de tip '​fanout'​ a fost creat."​) print(f"​Exchange-ul '​{exchange_name}'​ de tip '​fanout'​ a fost creat."​)
  
-hannel.queue_declare(queue=queue_name) 
- 
-# Legare queue la exchange 
 queue_name = "​queue1"​ # nume diferite pentru fiecare consumator queue_name = "​queue1"​ # nume diferite pentru fiecare consumator
 +channel.queue_declare(queue=queue_name)
  
 +# Legare queue la exchange
 channel.queue_bind(exchange=exchange_name,​ queue=queue_name) channel.queue_bind(exchange=exchange_name,​ queue=queue_name)
  
Line 349: Line 348:
 === Setup MQTT === === Setup MQTT ===
  
-Instalare în Python ​(biblioteca ''​paho-mqtt''​):+Pentru a conecta o aplicație ​Python ​la MQTT, vei folosi ​biblioteca ''​paho-mqtt''​. Aceasta permite crearea și configurarea conexiunilor,​ și trimiterea sau recepționarea mesajelor prin MQTT. 
 + 
 +== 1. Instalarea bibliotecii ''​paho-mqtt''​ == 
 + 
 +Asigură-te că ai instalat biblioteca ''​paho-mqtt''​. Poți face acest lucru rulând următoarea comandă:
  
 <​code>​ <​code>​
Line 356: Line 359:
  
 == Publisher == == Publisher ==
 +
 +Următoarea secvență de cod implementează un nod de tip publisher care trimite mesaje prin MQTT:
  
 <code python> <code python>
Line 381: Line 386:
  
 == Subscriber == == Subscriber ==
 +
 +Următoarea secvență de cod implementează un nod de tip subscriber care primește mesaje venite prin MQTT:
  
 <code python> <code python>
Line 404: Line 411:
 client.loop_forever() client.loop_forever()
 </​code>​ </​code>​
 +
 +== Interfață grafică ==
 +
 +Putem vizualiza datele la nivelul broker-ului de mesaje folosind un GUI precum MQTTBox (windows: [[https://​apps.microsoft.com/​detail/​9nblggh55jzg|from Microsoft Store]], web: [[https://​github.com/​workswithweb/​MQTTBox|from GitHub]])
 +
 +{{:​isi:​laboratoare:​mqtt_box_1.png?​600|}}
 +
 +{{:​isi:​laboratoare:​mqtt_box_2.png?​600|}}
 +
 +
 +
  
  
Line 411: Line 429:
 === RabbitMQ === === RabbitMQ ===
  
-<​note>​ +<​note ​tip
-Descărcați proiectul de pe GitHub[[https://​github.com/​ACS-ISI/​Messenger/​tree/​main|Messenger]] +Pentru a instala toate dependențele necesare pentru laboratorul de astăzi, rulați: ''​pip install ​-r requirements.txt''​ folosind fișierul requirements.txt cu următorul conținut:
-</​note>​+
  
 +<​code>​
 +Flask==3.1.0
 +Flask_SocketIO==5.4.1
 +pika==1.3.2
 +</​code>​
  
-<note tip> 
-Pentru a instala toate dependențele necesare pentru laboratorul de astăzi, rulați: ''​pip install -r requirements.txt''​. Fișierul ''​requirements.txt''​ poate fi descărcat de aici: [[https://​github.com/​ACS-ISI/​Messenger/​blob/​main/​requirements.txt|requirements.txt]]. 
 </​note>​ </​note>​
  
Line 425: Line 445:
  
  
-== 2. Exchange și publisher ​de mesaje ==+== 2. Publisher ​de mesaje ==
  
 Creează un script Python care să permită citirea textelor de la tastatură și publicarea acestora într-un exchange nou. (care este creat programatic după realizarea cu succes a conexiunii la RabbitMQ). Scriptul va citi textul de la utilizator și va publica fiecare mesaj în exchange-ul RabbitMQ (in mod ''​fanout''​). Creează un script Python care să permită citirea textelor de la tastatură și publicarea acestora într-un exchange nou. (care este creat programatic după realizarea cu succes a conexiunii la RabbitMQ). Scriptul va citi textul de la utilizator și va publica fiecare mesaj în exchange-ul RabbitMQ (in mod ''​fanout''​).
Line 438: Line 458:
 </​code>​ </​code>​
  
-== 3. Queue și subscriber ​pentru mesaje ==+== 3. Subscriber ​pentru mesaje ==
  
 Creează un script Python care să creeze un queue, să-l lege la exchange-ul din exercițiul 1 și să afișeze fiecare mesaj primit. Scriptul va crea un queue nou și îl va asocia (binding) cu exchange-ul creat în exercițiul anterior. Pentru fiecare mesaj primit în queue, scriptul va afișa conținutul acestuia în consolă. Creează un script Python care să creeze un queue, să-l lege la exchange-ul din exercițiul 1 și să afișeze fiecare mesaj primit. Scriptul va crea un queue nou și îl va asocia (binding) cu exchange-ul creat în exercițiul anterior. Pentru fiecare mesaj primit în queue, scriptul va afișa conținutul acestuia în consolă.
Line 464: Line 484:
 TOPIC = "​chat/​general"​ TOPIC = "​chat/​general"​
 </​code>​ </​code>​
 +
 +Atenție! Daca toți colegii se conecteaza pe același topic, mesajele vor ajunge și la ei (și invers)
  
 </​note>​ </​note>​
Line 478: Line 500:
  
 Test: Test:
-  * Trimite mesaje între instanțe +  * Trimite mesaje între instanțe ​(publisher/​subscriber) 
-  * Observă că brokerul rutează mesajele automat+  * Observă că brokerul rutează mesajele automat ​pe baza topic-ului, indiferent de câte instanțe de publisher sau subscriber sunt conectate la broker
  
  
isi/laboratoare/07.1763230094.txt.gz · Last modified: 2025/11/15 20:08 by alexandru.predescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0