Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


FreeBSD + RabbitMQ



FreeBSD + RabbitMQ

Подсмотрено у: https://www.8host.com/blog/ustanovka-i-upravlenie-rabbitmq/

RabbitMQ
принимает сообщения "задачи" от отправителей "читай веб-приложений"
формирует из них очередь
после распределяет ообщения "задачи" между рабочими процессами

RabbitMQ
предоставляет интерфейс, который при помощи брокера
соединяет отправителей "Publishers" с получателями "Consumers"
распределяет данные в соответствующие списки — очереди сообщений "Message Queues"

Схема выглядит так:



# Установка

pkg install rabbitmq

echo 'rabbitmq_enable="YES"' >> /etc/rc.conf

/usr/local/etc/rc.d/rabbitmq start

/usr/local/etc/rc.d/rabbitmq status
# или
rabbitmqctl status

# Доступные для включения плагины
# http://www.rabbitmq.com/plugins.html
rabbitmq-plugins list

# Консоль управления
# http://www.rabbitmq.com/management.html
rabbitmq-plugins enable rabbitmq_management

# Добавим пользователя
rabbitmqctl add_user administrator your_password
rabbitmqctl set_permissions -p  / administrator ".*" ".*" ".*"
rabbitmqctl set_user_tags administrator administrator

# Вывести список пользователей
rabbitmqctl list_users

# rabbitmq listen on: http://server-ip:15672/

# Скачаем утилиту администрирования
fetch http://127.0.0.1:15672/cli/rabbitmqadmin
chmod 0755 rabbitmqadmin

# Примеры команд
# https://www.rabbitmq.com/management-cli.html

python2.7 rabbitmqadmin list queues vhost name node messages message_stats.publish_details.rate

python2.7 rabbitmqadmin list exchanges

python2.7 rabbitmqadmin declare queue name=test durable=false

python2.7 rabbitmqadmin publish routing_key=test payload="Sending 1"

python2.7 rabbitmqadmin publish routing_key=test payload="Sending 2"

python2.7 rabbitmqadmin list queues

python2.7 rabbitmqadmin get queue=test

python2.7 rabbitmqadmin get queue=test count=10

python2.7 rabbitmqadmin get queue=test ackmode=ack_requeue_false
python2.7 rabbitmqadmin get queue=test ackmode=ack_requeue_false

python2.7 rabbitmqadmin -H 127.0.0.1 -u administrator -p your_password list vhosts


# Взаимодействие (пример с Python)

# RabbitMQ требует поддержку протокола AMQP (Advanced Message Queuing Protocol)
# В Python имеются библиотеки pika, py-amqplib и т.п.

# Почитать документацию: https://www.rabbitmq.com/tutorials/tutorial-one-python.html

# Установим (в моем варианте python 2.7)
pkg search pika
pkg install py27-pika-0.10.0

# Скрипт отправки сообщения rabbit_hello.py:

# Где:
Идет подключение к серверу
Создаётся очередь с именем "test"
Отправляем сообщение Hello World! через exchange по умолчанию(exchange='') в очередь test(routing_key='test')
Закрываем соединение

chmod +x rabbit_hello.py

# Запускаем:
./rabbit_hello.py

# Проверяем
python2.7 rabbitmqadmin get queue='test'
# Или так
rabbitmqctl list_queues

# Скрипт получения сообщения rabbit_get_hello.py:

# Где:
Идет подключение к серверу
Создаётся очередь с именем "test", если отсутствует
Функция callback, которая получает сообщения и выводит их на консоль
Вызов callback в basic_consume, передавая имя очереди "test"
Зпускаем бесконечный цикл с start_consuming, который вызывает basic_consume

chmod +x rabbit_get_hello.py

# Проверяем
./rabbit_get_hello.py


Примеры скриптов были взяты у: https://rtfm.co.ua/rabbitmq-zapusk-opisanie-primery/

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект