Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

ссылка: веб-сервисы могут быть недоступны и недоступны - что вы тогда делаете? В качестве дополнения к этому; Что делать, если ваша локальная сеть и ваш локальный компьютер также не работают? Пока вы ждете, что система восстановит зависимые развернутые системы в другом месте, ожидая, что эти данные должны увидеть альтернативный поток данных. В противном случае это может быть недостаточно хорошим ответом "в реальном времени" на сегодняшний день и очень скоро в будущих требованиях Internet of Things (IOT).

если вам нужна истинная параллельная, нелетучая память различных потоков FIFO (по крайней мере, в какой-то момент вдоль цепочки сигналов), используйте FPGA и FRAM-память. FRAM работает на тактовой частоте, и FPGA-устройства могут быть перепрограммированы на лету, добавив и убрав, однако необходимо много независимых параллельных потоков данных (в пределах установленных ограничений, конечно).