Перейти к содержанию
Установить приложение

Установите наше приложение для более удобного доступа к сообществу.

Best Gothic Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

RabbitMQ: The Gold Standard for Message Brokering

images?q=tbn:ANd9GcSOy350rTVt7qC1tX7aCgVy6w6AWFTdCe7Uwg&s

RabbitMQ — один из самых популярных брокеров сообщений с открытым исходным кодом. Он выступает в роли посредника (промежуточного программного обеспечения) для ваших приложений, позволяя им асинхронно взаимодействовать друг с другом, отправляя и получая сообщения.

1. Основная концепция: Разделение компонентов

Главная цель RabbitMQ — разделить программные компоненты. В монолитной системе функции вызывают друг друга напрямую. В распределенной системе один сервис (Производитель) отправляет сообщение в RabbitMQ, а другой сервис (Потребитель) принимает его, когда оно готово. Это гарантирует, что если сервис Потребителя недоступен или занят, Производитель сможет продолжать работу без сбоев.

2. Как это работает (модель AMQP)

RabbitMQ в основном использует AMQP (Advanced Message Queuing Protocol). Рабочий процесс включает следующие шаги:

Производитель: приложение, отправляющее сообщение.

Обменник: «маршрутизатор». Он получает сообщения от отправителей и помещает их в очереди на основе определенных правил (ключей маршрутизации).

Очередь: буфер, в котором хранятся сообщения до момента их обработки.

Потребитель: приложение, ожидающее получения и обработки сообщений.

3. Гибкие типы маршрутизации

RabbitMQ известен своими сложными возможностями маршрутизации, которые выходят за рамки простой «точечной» доставки:

Прямой обмен: доставляет сообщения в очереди на основе точно совпадающего ключа маршрутизации.

Обмен с широковещательной рассылкой: маршрутизирует сообщения во все доступные очереди (широковещательная рассылка).

Обмен по темам: маршрутизирует сообщения на основе совпадений с использованием подстановочных знаков (например, orders.europe.# может соответствовать любому заказу, поступающему из Европы).

Обмен заголовками: использует атрибуты заголовка сообщения для маршрутизации вместо ключей маршрутизации.

4. Надежная целостность данных в RabbitMQ

RabbitMQ разработан специально для критически важных сред, где потеря данных недопустима. Это достигается за счет трех основных механизмов обеспечения надежности:

Явные подтверждения: Чтобы предотвратить потерю сообщений во время обработки, потребители должны подтвердить успешное получение. Если потребитель отключается или выходит из строя до отправки этого сигнала, RabbitMQ автоматически возвращает сообщение в очередь для обработки другим экземпляром.

Постоянное хранилище: Система может быть настроена на запись сообщений непосредственно на физический диск. Это гарантирует, что даже в случае полного сбоя брокера или перезагрузки оборудования данные останутся целыми и восстанавливаемыми.

Распределенная высокая доступность: Благодаря использованию кворумных очередей данные реплицируются на нескольких узлах в кластере. Эта избыточность гарантирует, что отказ одного сервера не приведет к простою сервиса или повреждению данных, поскольку другие узлы поддерживают согласованную копию очереди.

5. Почему стоит использовать RabbitMQ?

Независимость от языка программирования: Он имеет клиентские библиотеки практически для всех основных языков (Python, Java, JavaScript, Go, PHP, .NET и т. д.).

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

Масштабируемость: Он может обрабатывать тысячи сообщений в секунду и масштабируется горизонтально за счет добавления новых узлов в кластер.

Заключение

RabbitMQ — идеальный выбор, когда вам необходима сложная маршрутизация, высокая надежность и развитая экосистема. Он часто используется для фоновой обработки (например, отправки электронных писем), интеграции микросервисов и балансировки нагрузки между различными частями системы.

Давно пользуюсь в работе этим замечательным надёжным брокером. Прекрасно вписывается в современную микросервисную модель.

Конечно в последние годы много альтернативных решений но они крайне разочаровывают меня ненадёжностью и багами.

Например service bus microsoft а. поразил глючностью и багами из за которых чтобы чинить коннект приходилось настраивать перезапуск сервиса что весьма печально.

Рекомендуемые сообщения

Тьяльф, не ты один на эти грабли наступил. Майкрософт вечно пытается выдать ржавую кирку за элитное оружие, а потом удивляешься, почему она в руках рассыпается в самый неподходящий момент. С RabbitMQ всё честнее: если настроил прямыми руками, оно и пахать будет годами без капризов. А перезапускать сервис из-за кривого коннекта — это вообще позорище, будто мы до сих пор в альфа-версии сидим и баги костылями подпираем. Правильно сделал, что на Кролика перешел, там хоть архитектура надежная, а не из палок и грязи собрана.

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

Аккаунт

Навигация

Поиск

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.