Почему мы должны использовать rabbitmq - PullRequest
50 голосов
/ 27 февраля 2011

Зачем нам нужен RabbitMQ, когда у нас есть более мощный сетевой фреймворк на Python, который называется Twisted.Я пытаюсь понять причину, по которой кто-то захочет использовать RabbitMQ.

Не могли бы вы предоставить сценарий или пример с использованием RabbitMQ?

Кроме того, где можно найти учебное пособие по использованию RabbitMQ?

Ответы [ 6 ]

30 голосов
/ 06 октября 2013

Позвольте мне рассказать вам о нескольких причинах, по которым использование MOM (Message Oriented Middleware), вероятно, является лучшим выбором.

Разделение:

Это может разделить / отделить основные компоненты приложения.Здесь нет необходимости использовать все преимущества несвязанной архитектуры.Я просто хочу отметить, что это одно из основных требований для написания качественного и удобного в обслуживании программного обеспечения.

Гибкость:

На самом деле очень легко соединить два совершенно разных приложения, написанных наразные языки вместе с использованием протокола AMQP.Эти приложения будут общаться друг с другом с помощью «переводчика», который является MOM.

Масштабируемость:

Используя MOM, мы можем масштабировать систему горизонтально.Один производитель сообщений может передавать неограниченному числу потребителей сообщений задачу, команду или сообщение для обработки и для масштабирования этой системы все, что нам нужно сделать, - это просто создать новых потребителей сообщений.Допустим, мы получаем 1000 изображений в секунду, и мы должны изменить их размер.Решение этой проблемы с традиционными методами может быть головной болью.С помощью MOM мы можем передавать изображения потребителям сообщений, которые могут выполнять свою работу асинхронно и обеспечивать целостность данных.

Они также являются другими преимуществами использования MOM, но эти 3 являются, на мой взгляд, наиболее значительными.

13 голосов
/ 27 февраля 2011

Twisted не является реализацией очереди. Кроме того, RabbitMQ предлагает функции организации очередей на уровне предприятия и реализует протокол AMQP, который часто необходим в корпоративном мире.

10 голосов
/ 09 октября 2013

Twisted - это сетевая библиотека, которая реализует ряд сетевых протоколов, а также позволяет создавать свои собственные. Одним из протоколов, которые вы можете использовать с Twisted, является AMQP https://launchpad.net/txamqp

RabbitMQ - это брокер AMQP, то есть сервисы, которые работают вне вашего приложения, возможно, на отдельном кластере серверов. AMQP - это просто протокол, который используется для связи с брокером очереди сообщений, таким как RabbitMQ. Вы получаете много вещей от RabbitMQ. Вы можете отправлять сообщения постоянно с гарантированной доставкой, чтобы они приходили даже в случае сбоя вашего приложения и даже в случае перезапуска брокера RabbitMQ. Вы получаете балансировку нагрузки между потребителями сообщений, если у вас есть несколько потребителей в одной очереди. Вы получаете совместимость с приложениями на других языках, если вы используете разумно открытый формат сериализации для своих тел сообщений. AMQP позволяет разбить монолитное приложение на множество слабо связанных частей, которые могут работать на разных серверах. Это большой выигрыш для долгосрочного обслуживания приложения.

5 голосов
/ 11 декабря 2014

rabbitmq - это нечто большее, чем просто обмен сообщениями ... это общая платформа, которая способна связывать приложения. Используя rabbitmq, java-приложение может общаться с linux-сервером и / или .net-приложением, с ruby ​​& rails + почти всем, что находит свое место в корпоративной веб-разработке. И что самое важное, он реализует модель «запускай и забывай», предложенную AMQP. Это просто идеальная замена для JMS или ESB, особенно если вы работаете с кроссплатформенной архитектурой, с гарантией надежности. Существует даже специальная функция RPC (удаленный вызов процедур), которая упрощает разработку в распределенной арке.

Помимо всего этого, в мире финансовых услуг, таких как фондовая биржа или фондовый рынок, где требуется много надежной и эффективной маршрутизации (предположим, вы не знаете фактического числа людей, подписавшихся на ваши услуги, но хотите убедиться, что кто когда-либо так делает, получает ваши пинги независимо от того, подключены они в данный момент или подключится позже), правила rabbitmq, потому что они основаны на ERLANG и платформе Open-Telecom, которая обеспечивает высокую производительность при использовании минимальных ресурсов. Для наиболее удобного введения в rabbitmq см. Rabbitmq.com/getstarted.html для вашего родного языка разработки.

4 голосов
/ 28 февраля 2011

RabbitMQ - это реализация AMQP , которая определяет совместимый протокол для промежуточного программного обеспечения, ориентированного на сообщения. Таким образом, он определяет семантику для создания, публикации, маршрутизации и потребления сообщений, которая может быть реализована на любой платформе.

Концептуально это можно рассматривать как специализацию сетевого механизма, подобного Twisted, но основанного на принятом в отрасли стандарте.

Вот блог Росса Мейсона, в котором обсуждается интерес к совместимой публикации-подписке с AMQP: http://blogs.mulesoft.org/inter-operable-publishsubscribe-with-amqp/

2 голосов
/ 27 февраля 2011

Я использую RabbitMQ в качестве брокера сообщений для Сельдерей .

Кроме того, я работал с Twisted. Это отличается .

Подробнее см. Здесь AMQP : http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol

...