Может кто-нибудь объяснить, для чего используются брокеры сообщений? - PullRequest
13 голосов
/ 08 апреля 2009

В моей работе трудно идти пять минут без того, чтобы кто-то превозносил достоинства MQ Series, MSMQ и т. П., И мне всегда интересно, после того, как искорка словечек прошла, каковы некоторые реальные примеры из этих замечательных устройств в реальном мире.

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

Ответы [ 6 ]

15 голосов
/ 08 апреля 2009

Решения для организации очередей сообщений, такие как MQ Series или MSMQ, широко используются для интеграции распределенных корпоративных приложений, особенно работающих на разных платформах. Все сделано правильно (с постоянными очередями, асинхронным дизайном, а не «RPC over MQ» и вниманием к эксплуатационным требованиям), это дает вам высокая доступность по сравнению с синхронными интеграциями запросов / ответов, такими как RPC или шаблонные веб-сервисы (чьи доступность является продуктом соответствующей доступности: синхронная интеграция десяти систем с доступностью 99% дает совокупную доступность не более 90% - или хуже, если есть только одно слабое звено). Имейте в виду, для этого требуется, чтобы очереди сообщений имели высокую доступность сами по себе: для этой цели мы используем наш мэйнфрейм (угадайте, какой продукт мы используем!).

Брокеры сообщений (или интеграции) и «автобусы» - более сложный котелок рыбы. Они могут добавить

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

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

4 голосов
/ 08 апреля 2009

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

Очередь сообщений гарантирует, что сообщение будет доставлено точно одному клиенту.

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

4 голосов
/ 08 апреля 2009

Хотя у меня был очень горький опыт работы с серией MQ частично из-за того, что она была передана нам (магазин Microsoft) партнерской компанией, использование серии MQ (или любой системы обмена сообщениями) было неотъемлемой частью к заявке.

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

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

Второй использовал серию MQ, где сообщения помещались в очередь с гарантированной доставкой. Затем мы выталкивали очередь и обрабатывали сообщения. Система очередей принесла большую пользу, поскольку она позволила нам надежно передавать критические сообщения, что приводило к перемещению реальных денег.

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

Вторым примером, на этот раз использовавшим MSMQ, был сайт, который собирал информацию из кода dialhome, введенного в клиентские приложения. Код набора номера будет собирать статистику использования функций, как в программе Microsoft SQM. Когда сообщения поступали в веб-службу, мы помещали их в очередь. Тогда у нас могло быть любое количество серверов приложений, которые извлекали сообщения и отправляли их в базу данных, чтобы отправить их на склад.

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

4 голосов
/ 08 апреля 2009

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

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

Большинство систем очередей сообщений допускают постоянные очереди. Подумайте о типичной системе событий. Если слушатель отключен или иным образом не отвечает во время события, событие пропускается. При наличии постоянной очереди сообщений сообщение будет оставаться в очереди до тех пор, пока прослушиватель не будет повторно подключен. При этом никакие данные / события не теряются.

Я не знаю о продуктах, которые вы перечислили, но я знаю, что с JMS вы можете точно контролировать многопоточность, поскольку сообщения извлекаются из очереди. Теоретически, вы можете иметь поток в очереди, выполняя действия в этом потоке с сообщениями по мере их удаления. Кроме того, у вас есть возможность извлекать сообщения из нескольких очередей и выполнять над ними какие-либо действия в рамках общего потока.

3 голосов
/ 02 декабря 2009

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

Некоторое время назад (10 лет) я использовал метафору отправки сообщений для реализации системы ценообразования для фронт-офиса для брокера междилера. У нас были реализованы сервисы на C ++, VB6 и Excel / VBA (даже с использованием решателя Excel !!), хранилище данных в виде плоских файлов и sql, приложения для конечных пользователей, написанные в Excel и VB6, со сложной моделью данных (рыночные данные, доходность). кривые и объемные поверхности). Асинхронный обмен сообщениями (с постоянными / надежными сообщениями и публикацией / подпиской) сделал все это очень эффективным и масштабируемым - мы смогли добавить офисы в Токио и Нью-Йорке в инфраструктуру Лондона, даже не посещая удаленный сайт - просто стандартная установка.

Я большой поклонник, хотя я удивлен тем, как далеко они не продвинулись за последние 10 лет или около того.

2 голосов
/ 02 декабря 2009

Один пример «очень близко к требованию» из реального проекта. Которые бегут от нескольких лет. На ActiveMQ

1) Торговый центр для рынка судоходства.

  • У транспортной компании есть система, которая знает, сколько пакетов они могут отправить в режиме реального времени.

  • Каждая система отличается (например, язык, дизайн и т. Д.)

  • Мы написали адаптер для каждой компании «Особая IT-система для ActiveMQ»

  • Каждый адаптер выполняет простую работу: отправлять сообщения, когда у компании есть свободное место, и по какой цене. («Транспортное предложение»)

  • Мы написали клиента, который соберет все «транспортные предложения» и красиво отобразит их.

=> Та-да. у вас есть кроссплатформенная / языковая / процессная система для компании, которая не хочет общаться друг с другом

=> Тада 2: Если новая компания хочет войти в вашу торговую систему, им нужно только написать адаптер.

...