Понимание AMQP

AMPQ (Advanced Message Queueing Protocol) - это открытый протокол для асинхронного обмена сообщениями. Каждый байт переданной информации будет гарантированно доставлен. Эта характеристика позволяет писать библиотеки на любых языках и запускать на разных операционных системах и архитектурах CPU, что делает его действительно совместимым и кроссплатформенным стандартом.

Преимущества AMPQ перед JMS

AMPQ часто сравнивают с JMS (Java Message Service), более популярную систему обмена сообщениями в Java сообществе. Ограничение JMS заключается в том, что API определено, а формат сообщений - нет. В отличие от AMPQ, JMS не имеет требований к тому, как сообщение будет сформировано и передано. Фактически, каждый JMS брокер может создавать сообщения различного формата. Они просто должны использовать одно и то же API.

Поэтому Pivotal выпустила собственный JMS проект Rabbit, библиотеку, которая реализует JMS API, но использует RabbiMQ, AMPQ брокер для передачи сообщений.

AMPQ публикует эти спецификации в доступном для загрузки XML формате. Такая доступность делает её простой для библиотеки, поддерживаемую генерацию API по спецификации, а также автоматическую генерацию алгоритмов для сериализации и десериализации сообщений.

Эти преимущества и открытость спецификации вдохновили на создание множества брокеров, которые поддерживают AMPQ, среди которых:

AMPQ и JMS терминология

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

С оригинальным текстом урока вы можете ознакомиться на spring.io.

comments powered by Disqus