RabbitMQ для профессионалов
Copyright © 2017 Manning Publications Co.
|
Данный документ предоставляется по лицензии Creative Commons Attribution 3.0 License, за исключением разделов со специальными оговорками. |
Первая публикация на английском языке: Сентябрь 2017
Никакая часть этой книги не может быть воспроизведена, сохранена в какой- то системе извлечения или передачи в любом виде или посредством электронного, механического, фотографического или иного способа без получения первичного письменного разрешения публикующей стороны.
Многие из обозначений, используемых производителями и продавцами для их различения продуктов, считаются товарными знаками. В тех случаях, когда эти обозначения фигурируют в книге, и Manning Publications была осведомлена о заявке на товарный знак, обозначения были напечатаны в первоначальных заглавных буквах либо всем заглавием.
Опубликовано Manning Publications Co.
20 Baldwin Road
PO Box 761
Shelter Island, NY 11964
ISBN 978-1617291005
2018-05-27
- Автор
- Гайвин Рой
- Редактор по аудитории
- Карен Миллер
- Технический редактор
- Джеймс Титкамб
- Редактор технического развития
- Филип Уорнер
- Редактор тескта
- Алисон Бринер
- Корректор
- Картстен Шрёбак
- Наборщик
- Деннис Дайлинник
- Изготовитель переплета
- Мария Тюдор
- Вводная часть
- Часть 1. Архитектура RabbitMQ и приложения
- Глава 1. Основы RabbitMQ
- Глава 2. Как разговаривает Rabbit: протокол AMQ
- Глава 3. Экскурс вглубь свойств сообщения
- Надлежащее использование свойств
- Создание контракта явного сообщения с content-type
- Уменьшение размера сообщения при помощи gzip и content-encoding
- Ссылочные сообщения с применением message-id и correlation-id
- Установка даты порождения: свойство timestamp
- Автоматическое истечение срока сообщения
- Балансировка скорости и безопасности с помощью delivery-mode
- Удостоверение происхождения сообщения через app-id и user-id
- Определение особенностей сообщения свойством типа сообщения
- Применение reply-to для динамических рабочих потоков
- Индивидуализация свойств при помощи атрибутов заголовка
- Приоритеты атрибутов
- Атрибуты, которые вы не можете использовать: cluster-id/reserved
- Выводы
- Глава 4. Компромиссы с производительностью при публикации
- Балансировка между скоростью доставки и гарантией доставки
- Чего ожидать при отсутствии гарантии
- RabbitMQ не будет принимать немаршрутизируемые сообщения с обязательной установкой
- Подтверждение издателю как альтернатива с малым весом транзакциям
- Использование Альтернативного обмена для не выполнивших маршрут сообщений
- Пакетная обработка с транзакциями
- Обслуживание отказов узла с помощью очередей HA
- Очереди HA с транзакциями
- Оставление сообщений на диск посредством delivery-mode
- Когда RabbitMQ выталкивается обратно
- Выводы
- Глава 5. Не получайте сообщения, потребляйте их
- Глава 6. Шаблоны сообщений через маршрутизацию сообщений
- Простая маршрутизация сообщений при помощи прямого обмена
- Широковещательные сообщения через веерный обмен
- Выборочная маршрутизация сообщений при помощи предметного обмена
- Выборочная маршрутизация сообщений при помощи обмена заголовками
- Эталонное тестирование производительности обмена
- Мета переход: маршрутизация обмена- к- обмену
- Маршрутизация сообщений посредством обмена с согласованным хэшированием
- Выводы
- Часть 2. Управление RabbitMQ в Центре обработки данных или в облачном решении
- Часть 3. Интеграция и персонализация
- Дополнение A. Приступая к установке
- Указатель
Когда Manning Publications издала RabbitMQ in Action в апреле 2012, RabbitMQ быстро набрал популярность. На сегодняшний день он является одним из выдающихся лидеров в мире брокеров сообщений и идеально подходит для различных применений. Содействие коммуникации через распределённые приложения, использование микросервисов в сервис- ориентированной архитектуры, а также обеспечение логического разделения компонентов CQRS и Event Sourcing - это лишь некоторые из широких применений RabbitMQ.
Теперь мы представляем новое, углубленное исследование самого RabbitMQ, углубляющегося далеко под его покровы, исследуя такие вещи, как структурирование расширенного протокола сообщения (AMQ), последовательное исследование различных обменов, а также рассмотрение различных сторон производительности. RabbitMQ in Depth нацелен на то, чтобы перевести ваше понимание RabbitMQ на новый уровень и позволить вам в дальнейшем применять эти знания в реальных приложениях сегодняшнего дня.
Эта книга отняла какие- то время на своё создание и, прежде всего, огромное спасибо всем нашим семьям и друзьям, которые неустанно стояли у всех нас за спиной, мирились с нами и заставляли этому позднем вечернему кофе поддержать нас в продвижении через длительные часы работы, необходимых для написания этой книги - спасибо!
Альваро Вайдела и Джейсону Дж. У. Уильямсу, авторам RabbitMQ in Action (также опубликованной Manning Publications, в апреле 2012 года), за основу для понимания и интереса бесчисленных разработчиков к самому RabbitMQ.
Карен, нашему редактору по разработке, за её бесконечное терпение и понимание нас на протяжении всего этого периода, а также всей команде Manning за приложенное всеми фантастическое усилие чтобы наконец довести нас до момента издания. Это была тяжёлая работа, и мы преодолели довольно много раундов, но мы благодарны за солидные производственные усилия, которые привели к результату!
Спасибо также большое техническому корректору Картену Штрёбаку, чей вклад очень помог книге, так же как и отзывы рецензентов: Филлипа Уорнера, Джерри Куча, Нади Саад Нори, Брюса Снайдера, Роберта Килти, Милоса Миливоевича, Арати Маддулы, Яна Далласа, Джорджа Харли, Димитрия Авалиотиса, Хехена Гао, Стефана Туральски, Эндрю Мередит, Артёма Дейнеко, Дэвида Паккуда, Барри Александера, Биджу Кунджуммена, Адольфо Переса Альвареа, Брэндона Вилхита, Дэвида Палл и Рэй Луго.
Есть ещё много других людей, которые помогли внести свой вклад в эту книгу. Мы не можем упомянуть всех по имени, поскольку это будет означать, что благодарности будут продолжаться и продолжаться, но большое спасибо всем, кто помог сделать это возможным!
RabbitMQ является брокером сообщений с открытым исходным кодом, написанном на Trlang, который в настоящее время находится под крылом Pivotal Software. Он основывается на открытом протоколе AMPQ с официальными библиотеками клиентов на Java, .NET, Erlang,, помимо библиотек прочих популярных языков программирования.
Данная книга соотносится с RabbitMQ 3.6.3, поэтому при нечётком расписании выпусков самого RabbitMQ, к тому моменту, когда эта книга достигнет вас, могут появиться и более новые версии. Не беспокойтесь, так как по нашему опыту RabbitMQ редко разрушал свойства новыми выпусками, взамен лишь добавляя новыую функциональность и внося исправления в проблемные места!
Все используемые в книге примеры кода написаны на Python, но если у вас нет рабочей настройки Python и RabbitMQ, или вы просто пожелаете экспериментировать не настраивая всю среду, мы включили инструкции по настройке блоков Vagrant со всей предварительной настройкой. Обязательно ознакомьтесь с Дополнением A. Приступая к установке для получения инструкций о том, как его установить и запустить.
Дорожная карта
Глава 1. Основы RabbitMQ рассматривает основы RabbitMQ: различные свойства самого RabbitMQ, а также основу RabbitMQ, модель Advanced Messaging Queuing.
Глава 2. Как разговаривает Rabbit: протокол AMQ раскрывает протокол AMQ, рассматривая структуру его кадра, а также процессы низкого уровня, которые происходят при публикации сообщений или их выборке из RabbitMQ.
Глава 3. Экскурс вглубь свойств сообщения продвигается ещё дальше и рассматривает все свойства сообщений, в том числе их заголовка, который добавляет в сообщения важные метаданные, такие как тип содержимого, кодировку и то как вы можете использовать эти заголовки в своих приложениях.
Глава 4. Компромиссы с производительностью при публикации обсуждает компромисс с производительностью, который должен быть осуществлён. С каждым уровнем гарантии ваше приложение рискует получить удар по производительности. Эта глава объясняет какие здесь имеются варианты и поможет вам балансировать потребности своих сред между гарантированностью обеспечения сообщениями и их молниеносной доставкой, принципом золотой середины.
Глава 5. Не получайте сообщения, потребляйте их поясняет концепцию потребления сообщений, рассматривая фундаментальную разницу между Basic.Get и Basic.Consume на нижнем уровне (и то, почему последнее имеет преимущества), а также упреждающую выборку и качество обслуживания, подтвеждения получения сообщений, временные очереди и время истечения действия сообщения.
Глава 6. Шаблоны сообщений через маршрутизацию сообщений рассматривает вглубь четыре центральных типа обмена в RabbitMQ и то какие преимущества они способны предоставить вашему приложению.
Глава 7. Масштабирование RabbitMQ в кластерах обсуждает как вы можете масштабировать вверх RabbitMQ управляя кластерами, восстановление после краха в кластере, и последующие обсуждения относительно производительности при работе в среде кластера.
Глава 8. Распространение межкластерных сообщений строит основные понятия ядра построения кластеров рассматривая федеративный обмен и очереди, интеграцию кластеров RabbitMQ с RabbitMQ, а также применение политик.
Глава 9. Использование альтернативных протоколов рассматривает прочие способы общения с RabbitMQ: используя MQTT и STOMP в качестве альтернативных протоколов, либо применяя обмен сообщениями HTTP без сохранения состояний.
Наконец, Глава 10. Интеграция с базами данных рассматривает интеграцию баз данных как с PostgreSQL, так и с InfluxDB для последующих интересных объединений.
Код
Почти весь приведённый в этой книге код можно обнаружить в различных формах в исходном коде примеров, который сопровождает данную книгу. Примеры кода можно бесплатно выгрузить с вебсайта Manning, а также из репозитория Github.
Форум книги
приобретение RabbitMQ in Depth также включает и бесплатный доступ к частному веб форуму, запущенному Manning Publications, в котором вы можете делать комментарии относительно этой книги, задавть технические вопросы, а также получать помощь ль самого автора и прочих пользователей. Для доступа к этому форуму,пеерейдите на https://forums.manning.com/forums/rabbitmq-in-depth. Вы также можете получить дополнительную информацию о форумах Manning и правилах поведения на https://forums.manning.com/forums/about.
Обязательства Manning перед нашими читателем состоят в том, чтобы предоставить место, в котором может состояться полноценный диалог между персональными читателями и самим автором. Это не обязательство какого-либо конкретного участия со стороны автора, вклад которого в форум остаётся добровольным (и неоплаченным). Мы предлагаем вам попробовать задать автору несколько сложных вопросов, чтобы не потерять его интереса! Форум и архивы предыдущих обсуждений будут доступны с веб-сайта издателя до тех пор, пока книга находится в печати.
Об авторе
Гайвин Рой является активным миссионером открытого исходного кода и его адвокатом, который работает с технологиями интернета и корпоративного уровня начиная с середины 90-х.
Об обложке
Рисунок на обложке RabbitMQ in Depth озаглавлен «Человек из Микановаца, Шриджем, Хорватия». Иллюстрация взята из репродукции альбома хорватских традиционных костюмов из середины девятнадцатого века Николы Арсеновича, опубликованного этнографическим Музеем в Сплите, Хорватия, в 2003 году. Иллюстрации были получены от полезной библиотеки в Этнографическом музее в Сплите, который расположен в римском ядре средневекового центра города: руины дворца ставки императора Диоклетиана примерно 304 года нашей эры. Книга включает в себя слегка раскрашенные иллюстрации фигур из разных регионов Хорватии, сопровождаемые описаниями костюмов и повседневной жизни.
Дресскод и образ жизни изменились за последние 200 лет, и исчезло разнообразие регионов, столь богатое в те времена. Теперь трудно сказать, что это жители разных континентов, не говоря уже о разных деревнях или городах, разделённых всего несколькими милями. Возможно, мы упустили культурное разнообразие для более разнообразной личной жизни - безусловно, для более разноплановой и быстро развивающейся технологичной жизни. Manning прославляет изобретательность и инициативу компьютерного бизнеса с книжными обложками, основанными на богатом многообразии региональной жизни двух столетий назад, воплощённых в жизнь иллюстрациями из старых книг и коллекций, подобных этой.