Что такое MQ и почему я хочу использовать его?

В моей команде на работе мы используем технологию MQ IBM много для перекрестной связи приложений. Я видел в последнее время на Hacker News и других местах о других технологиях MQ как RabbitMQ. У меня есть основное понимание того, что это (обычно проверенная область, чтобы поместить и получить сообщения), но что я хочу знать то, в чем точно действительно ли это хорошо? Как я буду знать, где я хочу использовать его и когда? Почему не только придерживаются более элементарных форм межпроцессного обмена сообщениями?

37
задан daveslab 19 May 2010 в 19:38
поделиться

5 ответов

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

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

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

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

64
ответ дан 27 November 2019 в 04:21
поделиться

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

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

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

Системы MQ обычно позволяют пользователям просматривать содержимое очереди, писать плагины, очищать очередь и т. Д.

9
ответ дан 27 November 2019 в 04:21
поделиться

MQ просто расшифровывается как Message Queue.

Вы будете использовать его, когда вам нужно надежно отправить межпроцессный / кросс-платформенный / кросс-сообщение приложения, не зависящее от времени.

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

3
ответ дан 27 November 2019 в 04:21
поделиться

MQ означает очередь сообщений.

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

Все это можно делать вручную с помощью сокетов, но это очень сложно.

Например: предположим, что вы хотите, чтобы процессы обменивались данными, но один из них может умереть в середине, а затем снова подключиться. Как сделать так, чтобы промежуточные сообщения не были потеряны? Решения MQ могут сделать это за вас.

15
ответ дан 27 November 2019 в 04:21
поделиться

Очереди сообщений формируют основу для многих шаблонов, описанных в классической книге «Шаблоны корпоративной интеграции» и на веб-сайте .

0
ответ дан 27 November 2019 в 04:21
поделиться