From a9c9e3469e42e9ca75bf17c72cd637430f3a5dd2 Mon Sep 17 00:00:00 2001 From: igors Date: Sun, 15 Dec 2024 17:19:53 +0400 Subject: [PATCH] . --- melnikov_igor_lab_4/Consumer_1.py | 31 +++++++++++ melnikov_igor_lab_4/Consumer_2.py | 28 ++++++++++ melnikov_igor_lab_4/README.md | 51 ++++++++++++++++++ melnikov_igor_lab_4/publisher.py | 28 ++++++++++ melnikov_igor_lab_4/queue_1_1.png | Bin 0 -> 16542 bytes melnikov_igor_lab_4/queue_1_2.png | Bin 0 -> 9071 bytes melnikov_igor_lab_4/queue_1_3.png | Bin 0 -> 10808 bytes melnikov_igor_lab_4/queue_2_1.png | Bin 0 -> 16537 bytes melnikov_igor_lab_4/rabbitMQ.png | Bin 0 -> 7013 bytes melnikov_igor_lab_4/tutorial_1.png | Bin 0 -> 28028 bytes melnikov_igor_lab_4/tutorial_1/receive.py | 25 +++++++++ melnikov_igor_lab_4/tutorial_1/send.py | 11 ++++ melnikov_igor_lab_4/tutorial_2.png | Bin 0 -> 30560 bytes melnikov_igor_lab_4/tutorial_2/new_task.py | 19 +++++++ melnikov_igor_lab_4/tutorial_2/worker.py | 23 ++++++++ melnikov_igor_lab_4/tutorial_3.png | Bin 0 -> 27516 bytes melnikov_igor_lab_4/tutorial_3/emit_log.py | 13 +++++ melnikov_igor_lab_4/tutorial_3/queue_1_1.png | Bin 0 -> 6728 bytes .../tutorial_3/receive_logs.py | 22 ++++++++ 19 files changed, 251 insertions(+) create mode 100644 melnikov_igor_lab_4/Consumer_1.py create mode 100644 melnikov_igor_lab_4/Consumer_2.py create mode 100644 melnikov_igor_lab_4/README.md create mode 100644 melnikov_igor_lab_4/publisher.py create mode 100644 melnikov_igor_lab_4/queue_1_1.png create mode 100644 melnikov_igor_lab_4/queue_1_2.png create mode 100644 melnikov_igor_lab_4/queue_1_3.png create mode 100644 melnikov_igor_lab_4/queue_2_1.png create mode 100644 melnikov_igor_lab_4/rabbitMQ.png create mode 100644 melnikov_igor_lab_4/tutorial_1.png create mode 100644 melnikov_igor_lab_4/tutorial_1/receive.py create mode 100644 melnikov_igor_lab_4/tutorial_1/send.py create mode 100644 melnikov_igor_lab_4/tutorial_2.png create mode 100644 melnikov_igor_lab_4/tutorial_2/new_task.py create mode 100644 melnikov_igor_lab_4/tutorial_2/worker.py create mode 100644 melnikov_igor_lab_4/tutorial_3.png create mode 100644 melnikov_igor_lab_4/tutorial_3/emit_log.py create mode 100644 melnikov_igor_lab_4/tutorial_3/queue_1_1.png create mode 100644 melnikov_igor_lab_4/tutorial_3/receive_logs.py diff --git a/melnikov_igor_lab_4/Consumer_1.py b/melnikov_igor_lab_4/Consumer_1.py new file mode 100644 index 0000000..0f3c984 --- /dev/null +++ b/melnikov_igor_lab_4/Consumer_1.py @@ -0,0 +1,31 @@ + +import time +import pika + + +def callback(ch, method, properties, body): + print(f'Consumer 1 получил сообщение: {body.decode()}') + + # Время задержки по условию + time.sleep(2) + + print('Consumer 1 закончил обработку') + + +def consume_events_1(): + connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) + channel = connection.channel() + + # Создание очереди + channel.queue_declare(queue='consumer1_queue') + # Привязка очереди + channel.queue_bind(exchange='beauty_salon_events', queue='consumer1_queue') + + channel.basic_consume(queue='consumer1_queue', on_message_callback=callback, auto_ack=True) + + print('Consumer 1 начал ожидать сообщения...') + channel.start_consuming() + + +if __name__ == "__main__": + consume_events_1() diff --git a/melnikov_igor_lab_4/Consumer_2.py b/melnikov_igor_lab_4/Consumer_2.py new file mode 100644 index 0000000..df4f950 --- /dev/null +++ b/melnikov_igor_lab_4/Consumer_2.py @@ -0,0 +1,28 @@ +import pika + + +def callback(ch, method, properties, body): + print(f'Consumer 2 получил сообщение: {body.decode()}') + + # Обработка "нон-стопом" + print('Consumer 2 закончил обработку') + + +def consume_events_2(): + connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) + channel = connection.channel() + + # Создание очереди + channel.queue_declare(queue='consumer2_queue') + + # Привязка очереди + channel.queue_bind(exchange='beauty_salon_events', queue='consumer2_queue') + + channel.basic_consume(queue='consumer2_queue', on_message_callback=callback, auto_ack=True) + + print('Consumer 2 начал ожидать сообщения...') + channel.start_consuming() + + +if __name__ == "__main__": + consume_events_2() diff --git a/melnikov_igor_lab_4/README.md b/melnikov_igor_lab_4/README.md new file mode 100644 index 0000000..11b4953 --- /dev/null +++ b/melnikov_igor_lab_4/README.md @@ -0,0 +1,51 @@ +### Лабораторная работа №4 - Работа с брокером сообщений + +#### Задание + +1. Установить брокер сообщений RabbitMQ. +2. Пройти уроки 1, 2 и 3 из RabbitMQ Tutorials на любом языке программирования. +3. Продемонстрировать работу брокера сообщений. + +#### Описание работы программы: + +- **Класс Publisher** осуществляет отправку сообщений своим клиентам. + +- **Класс Consumer1** принимает и обрабатывает сообщения с задержкой в 3 секунды. + +- **Класс Consumer2** мгновенно принимает и обрабатывает сообщения. + +#### Tutorials + +1. tutorial_1 + +![tutorial_1.png](tutorial_1.png) + +2. tutorial_2 + +![tutorial_2.png](tutorial_2.png) + +3. tutorial_3 + +![tutorial_3.png](tutorial_3.png) + +## Работа с RabbitMQ + +![rabbitMQ.png](rabbitMQ.png) + +## Показания очереди queue_1 при одном запущенном экземпляре Consumer_1 + +![queue_1_1.png](queue_1_1.png) + +## Показания очереди queue_2 + +![queue_2_1.png](queue_2_1.png) + +## Показания очереди queue_1 при двух запущенных экземплярах Consumer_1 +![queue_1_2.png](queue_1_2.png) + +## Показания очереди queue_1 при трех запущенных экземплярах Consumer_1 + +![queue_1_3.png](queue_1_3.png) + +## Видео работы программы +https://disk.yandex.ru/i/sfSwbQ3GYpy3FQ \ No newline at end of file diff --git a/melnikov_igor_lab_4/publisher.py b/melnikov_igor_lab_4/publisher.py new file mode 100644 index 0000000..9d53bb2 --- /dev/null +++ b/melnikov_igor_lab_4/publisher.py @@ -0,0 +1,28 @@ +import pika +import time + + +def publish_events(): + connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) + channel = connection.channel() + + # Создание exchange типа fanout + channel.exchange_declare(exchange='beauty_salon_events', exchange_type='fanout') + + events = [ + "Test1", + "Test2", + "Test3", + "Test4", + "Test5" + ] + + while True: + event = events[int(time.time()) % len(events)] + channel.basic_publish(exchange='beauty_salon_events', routing_key='', body=event) + print(f'Отправлено: {event}') + time.sleep(1) + + +if __name__ == "__main__": + publish_events() diff --git a/melnikov_igor_lab_4/queue_1_1.png b/melnikov_igor_lab_4/queue_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0644a69fb7ad578dfa91e8b070b3fbc208dbf033 GIT binary patch literal 16542 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 literal 0 HcmV?d00001 diff --git a/melnikov_igor_lab_4/queue_1_3.png b/melnikov_igor_lab_4/queue_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f63fa64b9f79fc5954089df683a04b2c8dfea63a GIT binary patch literal 10808 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 U!tVoLgo1AB8C@;Yx%=$j0D|+rr~m)} literal 0 HcmV?d00001 diff --git a/melnikov_igor_lab_4/queue_2_1.png b/melnikov_igor_lab_4/queue_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d3ab00beccd93d0ec0e6c91f4d76ee74ed5d1bbd GIT binary patch literal 16537 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 literal 0 HcmV?d00001 diff --git a/melnikov_igor_lab_4/tutorial_1/receive.py b/melnikov_igor_lab_4/tutorial_1/receive.py new file mode 100644 index 0000000..f118e0a --- /dev/null +++ b/melnikov_igor_lab_4/tutorial_1/receive.py @@ -0,0 +1,25 @@ +import pika, sys, os + +def main(): + connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) + channel = connection.channel() + + channel.queue_declare(queue='hello') + + def callback(ch, method, properties, body): + print(f" [x] Received {body}") + + channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True) + + print(' [*] Waiting for messages. To exit press CTRL+C') + channel.start_consuming() + +if __name__ == '__main__': + try: + main() + except KeyboardInterrupt: + print('Interrupted') + try: + sys.exit(0) + except SystemExit: + os._exit(0) \ No newline at end of file diff --git a/melnikov_igor_lab_4/tutorial_1/send.py b/melnikov_igor_lab_4/tutorial_1/send.py new file mode 100644 index 0000000..41cfff2 --- /dev/null +++ b/melnikov_igor_lab_4/tutorial_1/send.py @@ -0,0 +1,11 @@ +import pika + +connection = pika.BlockingConnection( + pika.ConnectionParameters(host='localhost')) +channel = connection.channel() + +channel.queue_declare(queue='hello') + +channel.basic_publish(exchange='', routing_key='hello', body='Hello World!') +print(" [x] Sent 'Hello World!'") +connection.close() \ No newline at end of file diff --git a/melnikov_igor_lab_4/tutorial_2.png b/melnikov_igor_lab_4/tutorial_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ebddcb0037d31765002ac7ef4d606574cba740d2 GIT binary patch literal 30560 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 T1-}3P6kquqIf&hV=Fk5HvNGzI literal 0 HcmV?d00001 diff --git a/melnikov_igor_lab_4/tutorial_2/new_task.py b/melnikov_igor_lab_4/tutorial_2/new_task.py new file mode 100644 index 0000000..a2444e0 --- /dev/null +++ b/melnikov_igor_lab_4/tutorial_2/new_task.py @@ -0,0 +1,19 @@ +import pika +import sys + +connection = pika.BlockingConnection( + pika.ConnectionParameters(host='localhost')) +channel = connection.channel() + +channel.queue_declare(queue='task_queue', durable=True) + +message = ' '.join(sys.argv[1:]) or "Hello World!" +channel.basic_publish( + exchange='', + routing_key='task_queue', + body=message, + properties=pika.BasicProperties( + delivery_mode=pika.DeliveryMode.Persistent + )) +print(f" [x] Sent {message}") +connection.close() \ No newline at end of file diff --git a/melnikov_igor_lab_4/tutorial_2/worker.py b/melnikov_igor_lab_4/tutorial_2/worker.py new file mode 100644 index 0000000..34cb8f7 --- /dev/null +++ b/melnikov_igor_lab_4/tutorial_2/worker.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python +import pika +import time + +connection = pika.BlockingConnection( + pika.ConnectionParameters(host='localhost')) +channel = connection.channel() + +channel.queue_declare(queue='task_queue', durable=True) +print(' [*] Waiting for messages. To exit press CTRL+C') + + +def callback(ch, method, properties, body): + print(f" [x] Received {body.decode()}") + time.sleep(body.count(b'.')) + print(" [x] Done") + ch.basic_ack(delivery_tag=method.delivery_tag) + + +channel.basic_qos(prefetch_count=1) +channel.basic_consume(queue='task_queue', on_message_callback=callback) + +channel.start_consuming() \ No newline at end of file diff --git a/melnikov_igor_lab_4/tutorial_3.png b/melnikov_igor_lab_4/tutorial_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3386b1f7e8705ce8d74b5e987caca159a49996e4 GIT binary patch literal 27516 zcmc$`cUY6z);H{oql}etEC>jhkx@nw5NS$_9hIii1SC-r5F$jRmn3!u5l|UwfQa-O zsR07XAVQ?~LdtKkfKbvIV``&x6wb%Ns- S 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 literal 0 HcmV?d00001 diff --git a/melnikov_igor_lab_4/tutorial_3/emit_log.py b/melnikov_igor_lab_4/tutorial_3/emit_log.py new file mode 100644 index 0000000..45b6989 --- /dev/null +++ b/melnikov_igor_lab_4/tutorial_3/emit_log.py @@ -0,0 +1,13 @@ +import pika +import sys + +connection = pika.BlockingConnection( + pika.ConnectionParameters(host='localhost')) +channel = connection.channel() + +channel.exchange_declare(exchange='logs', exchange_type='fanout') + +message = ' '.join(sys.argv[1:]) or "info: Hello World!" +channel.basic_publish(exchange='logs', routing_key='', body=message) +print(f" [x] Sent {message}") +connection.close() \ No newline at end of file diff --git a/melnikov_igor_lab_4/tutorial_3/queue_1_1.png b/melnikov_igor_lab_4/tutorial_3/queue_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f890c409326fffe97d58339d3d852294d9b12093 GIT binary patch literal 6728 zcmeHMX;{+Ry8lsi|cpn4*Q1IiTf$rU~wHZrW!%V49j1 znRBFqNJ<$+X3hgDB9$W{ngf_1c>gx+z0dh@?{m*N&;4+p`+*16^se;|>s`O!OX4v{ z8)ZdRMF0SlZI2vu27o0b@B^1$0rud#2EZ>>72AUcPKJ93I4}JAPDe5)XPfsvduAT! zCl4ir^HKKCGe7py#`FUa4o8%IMz?NgYlHK)Zm1LP3gNv{f}+eC{7=DDbMD%}vbOmh z_8z=q!Bw&7ySQCF>j9}b@L}sKyswsch~W9yW+$+}ecsj+NpLLfuviXkVbrY$q9ICd z006(4w=+r6J=uCC5Y2=qECK4aG63N0YBUi2MBWhCkBr#}Y}pN82|(6ER{-)iAj^Q5 zL;v-(xUSg=Zh?^Qhzq ziG1ezXdjU-14qBOYL$LQv)C*mnLo>QoM`IwnLh4`@2C#Y&(Yl1jH_uX&ZK->T(B0+ z%_t(sg(deF>f=}#EC6+RnCy28LX!zygFnwdr8X6_i+9C!3(rrFy>|`1lI3cWms09k zF@e)o99i;w-#Yl1)$=CQzN<7}k3Q+g+VEM7uvdQzBPk?^(+DX-?v3d#P-5T752J6( z*NkK@Nxu-0ka{h5T0AlgFKx2Qv42y^&UY#;tucmp?n5*>JLazI>klzRuOLJ{oGnXi^adzQMz;VF9RHi7iqfw`zq*uvSDt@Wp@ ziW%GFNDORZR=7~>S$mPv4%E6?(N*rzYD+u_WTgg`oa?_1C}g?QpjZ=L zPHE}m^}h~xSrYD3x!8B9-FYRQ>y9fnba+s19ZjHOXi*x9q=`9Q5*E+1*9tFADV<2m zeh_31be-72n4&0451MaA*K8SE4%cC
    QVay%1fdezsU10=?q`%XD{Q(0+zLfpvj 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 ACjbBd literal 0 HcmV?d00001 diff --git a/melnikov_igor_lab_4/tutorial_3/receive_logs.py b/melnikov_igor_lab_4/tutorial_3/receive_logs.py new file mode 100644 index 0000000..60d881d --- /dev/null +++ b/melnikov_igor_lab_4/tutorial_3/receive_logs.py @@ -0,0 +1,22 @@ +import pika + +connection = pika.BlockingConnection( + pika.ConnectionParameters(host='localhost')) +channel = connection.channel() + +channel.exchange_declare(exchange='logs', exchange_type='fanout') + +result = channel.queue_declare(queue='', exclusive=True) +queue_name = result.method.queue + +channel.queue_bind(exchange='logs', queue=queue_name) + +print(' [*] Waiting for logs. To exit press CTRL+C') + +def callback(ch, method, properties, body): + print(f" [x] {body}") + +channel.basic_consume( + queue=queue_name, on_message_callback=callback, auto_ack=True) + +channel.start_consuming() \ No newline at end of file