Сегодня протестируем работу RabbitMQ с помощью скриптов на Python.
Для начала поднимем RabbitMQ в контейнере Docker по статье с нашего сайта
Теперь установим Python 3, если его нет и необходимые библиотеки:
sudo apt install python3 pip install pika time
После успешной установки создаем файл send.py любым текстовым редактором, и копируем в него код:
#!/usr/bin/env python import pika, time # тут правим логин/пароль пользователя RabbitMQ credentials = pika.PlainCredentials('rabbit', 'rabbit') # тут правим IP RabbitMQ и виртуал_хост (/) parameters = pika.ConnectionParameters('172.21.0.3', 5672, '/', credentials) connection = pika.BlockingConnection(parameters) channel = connection.channel() # запускаем цикл number = 0; while number < 50: time.sleep(5) # тут правим exchange на свой channel.basic_publish(exchange='logs', routing_key='hello', body='"https://it-chainik.ru" Rabbitmq from python') print("[x] Sent Message") number=number+1 connection.close()
В этом скрипте мы подключаемся к нашему брокеру сообщении и отправляем ему 50 сообщений с задержкой в 5 секунд.
Запускаем и проверяем:
python3 send.py
Идем в наш RabbitMq и проверяем очередь, если все правильно настроено то в ней будет лежать 50 наших сообщений:
Давайте теперь их считаем recive.py скриптом c задержкой в 1 секунду:
#!/usr/bin/env python import pika, sys, os, time credentials = pika.PlainCredentials('rabbit', 'paradox') parameters = pika.ConnectionParameters('172.29.0.1', 5672, '/', credentials) def main(): time.sleep(1) connection = pika.BlockingConnection(parameters) channel = connection.channel() def callback(ch, method, properties, body): print(" [x] Received:" % body) # тут меняем название очереди на свое channel.basic_consume(queue='logs', 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)
Настройки в скрипте меняем на свои аналогично скрипту send.py. Запускаем:
Очередь освобождена: