Проверка работы RabbitMQ на Python

Сегодня протестируем работу 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. Запускаем:

Очередь освобождена:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *