Pull to refresh

Comments 58

А планируется просто перевести 5 простейших туториалов с сайта или все же подвести к статье про использование кролика в боевых условиях?
Мне RabbitMQ достаточно интересен, поэтому если смогу написать о чем-то чего на хабре еще нет, то обязательно это сделаю.
Думаю, про боевые условия должен написать тот, кто его использует в бою…
нам он в бою не подошел из-за большого оверхеда. Мы сделали своё маленькое чудо.
Раскройте секрет: на что был оверхед?
на чтение из очереди,
нам не подходила скорость чтения. точных цифр уже не помню,
кажется на наших дев машинах чтение было 4,5К запросов
нам этого не хватало
на машинах помощнее, Алекс (гл разработчик, фамилию забыл, надо поднимать переписку) говорил, что сервер должен держать 12К

вообще у кролика довольно-таки обширная функциональность и использовать как простой однопоточный сервер очередей не эффективно.
Red Hat Enterprise MRG рассматривали в качестве брокера? Они используют модифицированнуй qpid если не ошибаюсь…
рассматривали, но там что-то не срослось,
плюс дело в самом AMQP — он избыточен
Вот статья на тему использования в боевых условиях на нашем проекте.
для постов из песочницы нельзя указать тип, по крайней мере у меня
О том, что это перевод, я писал в самом начале и тоже привел ссылку на официальный сайт.
rabbitmq-c немного кривовата и с недавних пор уже не поддерживается разработчиками.
ее надо допиливать и переписывать на неблокируемые соединения, что потихоньку делается фан-клубом
но, в принципе, большинство функционала она покрывает
Будут проблемы с библиотеками вроде gevent
используют libevent
а в чем собственно проблема?
или 0MQ:
-http://pypi.python.org/pypi/django-ztask/0.1.5 пример 0MQ обертки для django
Ну 0MQ всё-таки далековато от названия статьи — это другой сервер с другим протоколом и для других целей.
0MQ спроектирован для скорости.
RabbitMQ это может быть не такой быстрый сервер, но имеющий огромное кол-во фич и работающий по стандартному протоколу.
поясните пожалуйста что значит «далековато» от названия статьи? Разговор идет о message queues (не о серверах), все они используются для одно цели — создавать message queues. И что значит стандартный протокол, который 0mq не поддерживает? Ну и заодно какие фичи rabbitmq не работают в 0mq?
год назад в разговоре с Питером (Pieter Hintjens), он упомянул, что именно его идеи были заимствованы для создания AMQP
Поясняю — я смотрю в тему и вижу целых три слова. Одно из них имя собственное, а два других… вообще устойчивое выражение в программирование никак не связное с конкретной предметной областью.
Что значит стандартный? Ну я наверно несколько переборщил, но, относительно остальных подобных протоколов, AMQP самый распространенный.

Популярные сервера — QPid, OpenAMQ и RabbitMQ.
Стандартное средство обмена сообщений в fedora linux(соответственно в будущем в red hat, centos, oracle linux и т.д.).
Другие серверы — Red Hat MRG, StormMQ, SwitMQ

Какие фичи отсутствуют в 0MQ? Ну тут конечно могли бы сами погуглить, а еще лучше поставить себе RabbitMQ.
Для начала советую ознакомится со списком плагинов(это не что-то сторонние, а то что идет в комплекте с сервером) www.rabbitmq.com/plugins.html
Далее можете переходит к более сложным вещам — виртуальные хосты, роутинг сообщений, федерализация… Чего стоить только возможность наладить роутинг между серверами.

Я бы мог подробнее на чем то остановится, но сложно оценить на каком уровне Вам рассказывать, если Вы не можете сравнить один из самых простых по функциональности сервер с один из самых навороченных.
Спасибо, я работал с несколькими MQ, в том числе и RabbitMQ. Насчет моего уровня и того что я не могу сравнить «самых простых по функциональности сервер(???) с один из самых навороченных» — скажу лишь, что с Питером (который придумал AMQP и 0MQ) я лично работал почти 2 месяца, используя 0MQ в проекте, который вы скорей всего даже знаете и не подозреваете, что там используется самый «простой» MQ.
Прежде чем писать что-то вроде «сложно оценить на каком уровне Вам рассказывать» сначала спросите сами себя на каком уровне вы это знаете.
Я вроде по русски примеры привел. Давайте подробней.
Виды кластеризации в 0MQ?
Роутинг по содержанию сообщения?
WEB административная панель? Причем с очень большой функциональностью.
Поддержка других протоколов? Stomp?
Shovel?
Авторизация? ACL? SSL? LDAP?
Аналог Firehorse есть?
TTL? и роутинг протухших сообщений?

0MQ вообще можно писать плагины? А кастомные авторизационные бэкэнды?

Я давно использую AMQP в проекте, который Вы наверняка знаете, ага, причем раз в 12 дольше :) Неизвестными сервисами как странно меряться :-D
А то что на базе простого сервера можно построить сложный сервис я не утверждал.

Если хотите ответить, то хоть раз напишите что-то конкретное, а не просто пишите про Pieter Hintjens.
я в таких детских дебатах не участвую :)
NDA, этика и бесполезность, ввиду того, что вы толком не знаете, что такое MQ. все просто, как говорится
«давай, до свидания»
Прощай двухмесячный разработчик noname проекта :) Спасибо за «вагон» аргументов :)
и тебе не хворать, «специалист по гуглению», спасибо за копипаст с первой страницы поисковика и удачи в разработке больших и «навороченных» проектов, да погугли заодним что такое NDA, пригодится.
btw казалось бы, куда уж конкретней ссылаться на человека, который сделал наверно больше нас с вами для amqp. писькомерением вы тут никого не удивите, гугл у всех под рукой.
Да Вы прсто жжоте напалмом!
Причем тут протоколы? Сравнивали два сервера, а не протоколы.
Вы даже не утруждаете себя понять для каких целей создавались оба сервера и поэтому пишите всякие глупости.
Аргумента ниодного от Вас. Факт один — Вы общались с умным человеком, что не позволяет Вам спорить без аргументов ибо золотым Вы вряд ли стали от этого разговора.

Я сказал, что у RabbitMQ больше функций, чем у 0MQ и аргументировал.
А Вы хоть про маму с папой напишите и разговор дальше уводите от темы — не интересно с Вами общаться, т.к. нет полезной инфы в сообщениях.
Я где-то утверждал, что у RabbitMQ меньше функционала, чем у 0mq? статья про использование конкретного брокера задач под python, в которой есть ссылка на библиотеки, исполняющие ampq, к которым я добавил 0mq имплементацию (которую вы неверно заклеймили не использующей ampq, вот вам полезная «инфа» кстати). Про сервера вы вообще что-то непонятное выдумали.
А с Питером я работал, а не просто общался, разница есть.
Нет, Вы не утверждали, а задали совершенно дурацкий вопрос «Ну и заодно какие фичи rabbitmq не работают в 0mq? » на который получили в ответ список фич, но слились в итоге на проекты, Питера и протокол.
Я задал совершенно нормальный вопрос, потому что уже почти год не смотрел на rabbitMQ, это не был вопрос с подвохом, я реально хотел узнать разницу и узнал.вы же прямо говном простите, изошли, доказывая мне, что я не имею должного бэкграунда, чтоб это понять.
А пример с проектом и Питером, я привел, чтоб доказать, что хоть что-то я да понимаю. Вас же либо зависть берет, что вы мне все пеняете, что я его упомянул, либо вам удовольствие доставляет чморит всех и вся.
Кстати в 0mq можно использовать тот же RabbitMQ, потому что это лишь одна из имплементаций amqp
Может кому полезно будет, реализация клиента только используя Qt4. Реализовано почти все, но для полноценной работы хватает.
github.com/fuCtor/QAMQP

Может быть в скором времени напишу топик с примером использования.
UFO just landed and posted this here
Согласен, звучит лучше, но я под «получатель» больше представляю саму по себе программу-получатель, а под «клиент» — ее уникальный экземпляр. Например, «3 получателя» — 3 разных программы получает сообщение, у каждой из которых может быть любое количество экземпляров (клиентов).
В общем, хотелось бы в тексте различать эти понятия — если предложите альтернативы, готов рассмотреть.
UFO just landed and posted this here
Я думаю, вторая и следующие части учебника, ответят на Ваши вопросы, но раз пока что еще перевода на них нет, попробую объяснить.
Количество программ-получателей определяется логикой взаимодействия программ в системе. Например, сообщение «SMS было отправлено», могут получать программа, списывающая деньги с баланса(1) и программа-логгер(2).
Количество экземпляров одной программы-получателя определяется загруженностью очереди. Например, если выполнение задачи занимает много времени, и один экземпляр программы не успевает обрабатывать все поступающие сообщения, то следует запустить большее количество экземпляров.
Обычно каждая программа-получатель имеет свою очередь, которую слушают 1..n+1 экземпляров этой программы.
UFO just landed and posted this here
Исправил на «поставщик» и «подписчик», спасибо Вам и akalend за замечания, сам привык к английским вариантам «продюсер» и «консьюмер».
>Мне кажется, что «отправитель» и «получатель» звучит в данном контексте лучше
Вообще-то в данном контексте должно быть «Поставщик» и «Подписчик»
особенно относится ко вторым: идет «подписка» на сообщения данного канала,
и клиент принимает сообщения не от конкретного Отправителя сообщения, а от конкретной очереди, т.е. в ту очередь сыпятся всякие сообщения от разных Поставщиков.
А в свою очередь — данная «Очередь» принимает сообщения от конкретной «Станции», «Коммутатора» или «Обмена». Слово «Exchange» можно перевести по разному. Думаю, Обменник — наиболее приемлемо.
Слать сообщения в «Обменник» — могут любые Поставщики.

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

и реализация этой логики осуществляется через «Привязки» В оригинале это Bind
Мы можем привязать Очередь к Обменнику. Без реализации логики привязок Подписчик не получит сообщение от Поставщика
С терминологией в переводе надо как-то определится.
UFO just landed and posted this here
Может кто не то сравнивал RabbitMQ и Gearman? Расскажите о достоинствах и недостатках этих решений.
это совсем разные решения, они решают разные задачи.
А можно более развернуто?
у меня с pika постоянно проблемы какие-то были. Смотрел puka — интерфейс удобнее, но пока не было возможности ей воспользоваться.
Если Вам не очень важно чтоб кода было поменьше, а скорость побольше, посмотрите kombu. С ним на много проще начинать общение с сообщениями :)
pypi.python.org/pypi/kombu/
Аббревиатура MQ означает Messages Queue — Очередь сообщений.
Любой более-менее уважающий себя вендор имеет свое решения для данного вида технологии.
В винде даже есть встроенное решение MS MQ.
В свое время пришлось плотно поработать с IBM MQ, пришлось даже переводить сишные заголовочные файлы на Дельфи.
В общем на рынке есть не только RabbitMQ, как может сложиться впечатление из поста.
На рынке много решений MQ, но ХаброНарод, в основном, интересуют открытые решения.
RabbitMQ реализует протокол AMQP, и таких решений не много.
Каждое решение имеет свои преимущества и недостатки и заточено под определенные задачи.
Нигде не написано, что перед работой нужно установить сам брокер.
sudo apt-get install rabbitmq-server
Да, и запустить.
Я как-то считал, что этот мануал исчерпывающий, и сервер поднимется прямо из питона, раз обратное не сказано.
Это ж для начинающих — то есть для тех, кто про rabbit услышал вчера
Sign up to leave a comment.

Articles