8000 GitHub - cycleg/amqp-cpp-asio: AMQP-CPP wrapper with boost::asio
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

cycleg/amqp-cpp-asio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Amqpasio: обертка библиотеки AMQP-CPP

Настоящая библиотека представляет собой обертку библиотеки AMQP-CPP с реализацией асинхронного ввода/вывода средствами Boost::asio.

Приложение, которому необходимо обмениваться сообщениями по протоколу AMQP, создает объект класса amqp::Connector настоящей библиотеки, содержащий все необходимое для взаимодействия с виртуальным хостом брокера AMQP. Если приложение взаимодействует с несколькими виртуальными хостами и/или брокерами, создается нужное число объектов. Далее amqp::Connector создает несколько объектов-приемопередатчиков, которые абстрагируют работу приложения с точками обмена (exchange point) протокола AMQP. С каждой точкой обмена связывается один канал AMQP, который может использоваться и как передачик (publisher), и как приемник (consumer) сообщений. Прием сообщений может выполняться как через именованную очередь, так и через очередь со случайным уникальным именем, генерируемым брокером.

На основные события, возникающие в цикле работы с брокером (установление или разрыв соединения, готовность/отключение приемопередатчика, поступление входящего сообщения и т.д.), приложение назначает функции обратного вызова. С их помощью реализуется логика работы с сообщениями AMQP.

Библиотека содержит класс amqp::ConnectionHandler, реализующий интерфейс ввода/вывода AMQP::ConnectionHandler библиотеки AMQP-CPP на основе средств асинхронного ввода/вывода библиотеки Boost::asio. Экземплярами этого класса владеют и управляют экземпляры amqp::Connector. Кроме того, в библиотеке имеются вспомогательные функции извлечения из AMQP-сообщений данных в формате JSON и формирования из таких объектов сообщений. Для работы с JSON используется библиотека RapidJSON.

Таким образом, amqpasio предоставляет приложениям законченное решение для организации межпрограммного взаимодействия посредством протокола AMQP на базе средств библиотек AMQP-CPP, boost::asio и RapidJSON.

Возможности AMQP, которые не поддерживаются

В данный момент не поддерживаются:

  • собственная обработка heartbeats (используется обработка по умолчанию из AMQP-CPP);
  • точки обмена, по типу отличные от "topic";
  • флаги при создании очередей (см. Transceiver::ExchangeCreationFlags) и публикации сообщений (не поддерживается флаг "immediate");
  • дополнительные опции (таблицы) при создании очередей;
  • транзакции при публикации сообщений;
  • подтверждения для публикатора (publisher confirms).

About

AMQP-CPP wrapper with boost::asio

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0