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






