A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
Előző változat mindkét oldalon Előző változat Következő változat | Előző változat | ||
tanszek:oktatas:informacios_rendszerek_integralasa:uezenetsorok-rabbitmq_2 [2023/05/08 07:17] knehez |
tanszek:oktatas:informacios_rendszerek_integralasa:uezenetsorok-rabbitmq_2 [2023/06/30 11:32] (aktuális) knehez |
||
---|---|---|---|
Sor 7: | Sor 7: | ||
* **Készítsen egy második klienst**, ami a 'qualityStatistics' sorrol olvassa a statisztikát és a konzolba kiírja hogy pl. '10 'WRONG' messages has been processed' | * **Készítsen egy második klienst**, ami a 'qualityStatistics' sorrol olvassa a statisztikát és a konzolba kiírja hogy pl. '10 'WRONG' messages has been processed' | ||
- | A fenti feladatot a http://docker.iit.uni-miskolc.hu-n keretrendszerben oldjuk meg. | + | A fenti feladatot a http://docker.iit.uni-miskolc.hu keretrendszerben oldjuk meg. |
=== RabbitMQ indítása docker-ben === | === RabbitMQ indítása docker-ben === | ||
Sor 14: | Sor 14: | ||
<code> | <code> | ||
- | docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.11-management | + | docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management-alpine |
</code> | </code> | ||
- | A futtatás után a rabitMQ management konzol elérhető az 15672-es porton, a guest/guest megadásával. A bal oldali listában láthatjuk a node1 10.x.y.z belső IP címét, amit használhatunk a kliensekben. | + | A futtatás után a rabitMQ management konzol elérhető az 15672-es porton, a guest/guest megadásával. A bal oldali listában láthatjuk a node1 10.x.y.z belső IP címét, amit használhatunk a kliensekben és a feldolgozóban. |
Hozzunk létre egy másik konzolt és indítsuk el az alábbi parancsot: | Hozzunk létre egy másik konzolt és indítsuk el az alábbi parancsot: | ||
Sor 28: | Sor 28: | ||
Hozzuk létre a quality_message_sender.py-t: | Hozzuk létre a quality_message_sender.py-t: | ||
+ | |||
+ | Használjuk a megfelelő IP-t a //__init__(self):// ben | ||
<code python> | <code python> | ||
Sor 33: | Sor 35: | ||
import random | import random | ||
import time | import time | ||
- | |||
class QualitySender: | class QualitySender: | ||
def __init__(self): | def __init__(self): | ||
- | self.connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) | + | self.connection = pika.BlockingConnection(pika.ConnectionParameters('10.x.y.z')) |
self.channel = self.connection.channel() | self.channel = self.connection.channel() | ||
self.channel.queue_declare(queue='qualityQueue') | self.channel.queue_declare(queue='qualityQueue') | ||
Sor 51: | Sor 52: | ||
def close_connection(self): | def close_connection(self): | ||
self.connection.close() | self.connection.close() | ||
- | |||
if __name__ == '__main__': | if __name__ == '__main__': | ||
Sor 61: | Sor 61: | ||
</code> | </code> | ||
+ | |||
+ | A második komponenshez indítsunk egy új konzolt: | ||
+ | |||
+ | A //__init__(self):// konstruktorban állítsuk be a rabbitMQ szerver IP címét | ||
<code python> | <code python> | ||
import pika | import pika | ||
- | |||
class QualityConsumer: | class QualityConsumer: | ||
Sor 102: | Sor 105: | ||
def close_connection(self): | def close_connection(self): | ||
self.connection.close() | self.connection.close() | ||
- | |||
if __name__ == '__main__': | if __name__ == '__main__': | ||
Sor 111: | Sor 113: | ||
consumer.close_connection() | consumer.close_connection() | ||
+ | </code> | ||
+ | |||
+ | Készítsük el a statisztika kiírását egy új konzolban: | ||
+ | |||
+ | <code python> | ||
+ | import pika | ||
+ | |||
+ | # RabbitMQ settings | ||
+ | connection = pika.BlockingConnection(pika.ConnectionParameters('10.x.y.z')) | ||
+ | channel = connection.channel() | ||
+ | |||
+ | channel.queue_declare(queue='qualityStatistics') | ||
+ | |||
+ | def callback(ch, method, properties, body): | ||
+ | message = body.decode() | ||
+ | print(f'{message}') | ||
+ | ch.basic_ack(delivery_tag=method.delivery_tag) | ||
+ | |||
+ | channel.basic_consume(queue='qualityStatistics', on_message_callback=callback) | ||
+ | print('Waiting for quality statistics...') | ||
+ | channel.start_consuming() | ||
</code> | </code> | ||
+ | **Feladat:** | ||
+ | A 15672-es porton lépjük be a rabbitMQ management console-ra és vizsgáljuk meg a lehetőségeit. | ||