Установка и управление Apache Qpid

Published by Leave your thoughts

На сегодняшний день существует множество решений для обмена сообщениями между приложениями и процессами. Все они имеют свои плюсы и минусы, поэтому лучшее, что можно сделать в такой ситуации – это оценить требования своей системы и выбрать программу согласно этим требованиям.

Apache Qpid – это одна из открытых систем обмена сообщениями, работающих по протоколу AMQP (Advanced Message Queuing Protocol), позволяющая выполнять обмен сообщениями между различными элементами системы.

Обмен сообщениями, брокеры сообщений и очереди сообщений

Обмен сообщениями – это способ обмена определенными данными между процессами, приложениями и серверами (как виртуальными, так и физическими). Такие сообщения, необходимые для решения некоторых технических потребностей, могут состоять из любых данных (начиная простыми текстовыми сообщениями и заканчивая двоичными данными). Для этого необходим интерфейс, управляемый сторонней программой (middleware, также промежуточное или межплатформенное ПО) – это и есть брокеры сообщений (Message Brokers).

Брокеры сообщений – это, как правило, программа-посредник, которая переводит язык системы с одного глобального языка на другой посредством телекоммуникационной среды. Брокеры справляются с приемом, созданием очереди и передачей сообщений гораздо лучше и быстрее, чем любые непрофильные аналоги и простые обходные варианты (как базы данных, демон cron и т.п.). для работы брокеры сообщений используют буферы, в которых они могут сохранять сообщения, создавая очередь сообщений, которая будет обрабатываться автоматически  или путем запроса.

Зачем нужны брокеры сообщений?

Брокеры сообщений работают как посредники для различных сервисов (например, для веб-приложения). Они могут значительно сократить нагрузку и сроки доставки сообщений, поскольку задачи, обработка которых обычно занимает совсем немного времени, передаются сторонней программе, единственная работа которой заключается в выполнении этих задач (то есть, рабочих процессов). Они также полезны, когда необходимо гарантировать сохраняемость передачи информации с одного места на другое.

Когда нужны брокеры сообщений?

В целом, основная функциональность брокеров охватывает еще много областей, включая, но не ограничиваясь:

  • Передача сообщения нескольким адресатам для обработки.
  • Отключенные пользователи не потеряют данные, поскольку могут получить их позже в полном объеме.
  • Внедрение асинхронного режима работы с серверными системами.
  • Упорядочение и определение приоритетов задач.
  • Балансировка нагрузки между рабочими процессами.
  • Более высокая надежность и время безотказной работы приложения.
  • И многое другое.

Что такое Apache Qpid?

Компания Apache Software Foundation разработала несколько программных решений для обмена сообщениями, и одно из них — Apache Qpid, реализация протокола AMQP в Apache. В отличие от некоторых более простых приложений, которые помогают разработчикам создавать свои собственные решения, Qpid, как и RabbitMQ, предоставляет удобный набор инструментов для создания очередей сообщений, защиты и управления транзакциями, кластеризации, сохраняемости процессов при помощи дополнительного слоя и многого другого. Его API по умолчанию поддерживает несколько языков программирования; кроме того, Qpid поставляется с брокерами C ++ (для Perl, Python, Ruby, .NET и т.п.) и Java (JMS API). Пожалуй, Qpid и RabbitMQ являются самыми популярными программами обмена сообщениями.

Особенности Apache Qpid

Полноценные брокеры сообщений имеют только небольшие отличия. Ниже приведен список особенностей и преимуществ Apache Qpid:

  • Обнаружение и автоматическое исправление неполадок клиента путем подключения к другому брокеру.
  • Простота кластеризации путем репликации очереди сообщений.
  • Стандартная обработка ошибок в кластерах.
  • Сохраняемость при помощи подключаемой архитектуры для обеспечения высокой доступности.

Что такое AMQP?

AMQP (или Advanced Message Queuing Protocol) – это широко распространенный открытый стандарт для обмена сообщениями. Как протокол и стандарт, AMQP создает общую основу для взаимодействия различных приложений и промежуточных брокеров сообщений.

Установка Apache Qpid

Установка Apache Qpid подразумевает установку двух наборов инструментов:

  • реализации Qpid Broker в зависимости от языка программирования (например, брокер C ++ для Python, Java Broker для Java);
  • и клиентских библиотек Qpid (например, Qpid Python).

Примечание: установка и все другие действия, описанные в данном руководстве, будут выполняться на новом сервере. Чтобы не нарушить взаимодействие сервера с клиентами и не испортить настройки, рекомендуется для начала выполнить это руководство на новом сервере.

Установка Apache Qpid на CentOS 6 / RHEL

Для начала обновите систему:

yum -y update

Затем, чтобы установить сервер Qpid C++ и остальные инструменты (вместе с привязками для Python), запустите:

yum install -y qpid-cpp-server qpid-tools

При необходимости можно установить привязки Qpid для других языков программирования и фреймворков, например, для Ruby:

yum install -y ruby-qpid

Установка Qpid на Ubuntu 13 / Debian 7

Процесс загрузки и установки Apache Qpid в Ubuntu и Debian аналогичен установке в CentOS.

Для начала нужно обновить стандартный набор приложений системы:

apt-get    update
apt-get -y upgrade

Затем запустите следующую команду, чтобы установить Qpid C++ и другие инструменты:

apt-get install -y qpidd qpid-tools
apt-get install -y libqpidmessaging2-dev python-qpid ruby-qpid

Примечание: во время установки будет предложено установить пароль для администратора демона Qpid.

Управление Apache Qpid

Для пользователей CentOS / RHEL

Чтобы запустить, остановить, перезапустить и проверить статус приложения, используйте следующие команды (соответственно):

# To start the service:
/sbin/service qpidd start
# To stop the service:
/sbin/service qpidd stop
# To restart the service:
/sbin/service qpidd restart
# To check the status:
/sbin/service qpidd status
# To force reload:
/sbin/service qpidd force-reload

Для пользователей Ubuntu / Debian

Чтобы запустить, остановить, перезапустить и проверить статус приложения в системах Ubuntu и Debian, используйте следующие команды (соответственно):

# To start the service:
service qpidd start
# To stop the service:
service qpidd stop
# To restart the service:
service qpidd restart
# To check the status:
service qpidd status
# To force reload:
service qpidd force-reload

Это все, что нужно знать для управления брокерами сообщений Apache Qpid.

Чтобы получить больше информации о работе Apache Qpid, читайте документацию:

  • C++
  • Java

Работа с Apache Qpid

Установив Apache Qpid и все необходимые привязки, рассмотрим простой пример, чтобы разобраться в основах работы Qpid.

Создайте образец файла hello_world.py при помощи nano:

nano hello_world.py

Внесите в него такой модуль:

# Import the modules we need
from qpid.messaging import *
broker     = "localhost:5672"
address    = "amq.topic"
connection = Connection(broker)
try:
connection.open()
# Define the session
session = connection.session()
# Define a sender *and* a receiver
sender   = session.sender(address)
receiver = session.receiver(address)
# Send a simple "Hello world!" message to the queue
sender.send(Message("Hello world!"));
# Fetch the next message in the queue
message = receiver.fetch()
# Output the message
print message.content
# Check with the server
session.acknowledge()
except MessagingError, err:
print err
finally:
connection.close()

Нажмите CTRL+X, чтобы сохранить файл, и Y для подтверждения.

Запуская вышеприведенный скрипт, вы должны увидеть сообщение Hello world в качестве вывода.

python hello_world.py
# Hello world!

Если же этого не случилось или возникли какие-то проблемы, убедитесь, что qpid запущен (используйте команды, приведенные в предыдущем разделе).

Tags: , , , , , , , , , , , ,

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

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


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>