Основные преимущества MSMQ - PullRequest
10 голосов
/ 31 января 2012

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

1 Ответ

20 голосов
/ 31 января 2012

MSMQ - отличная часть Windows. Это в основном промежуточное ПО, ориентированное на сообщения , которое очень помогает в некоторых архитектурах программного обеспечения.

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

Основная проблема: что, если Service2 внезапно станет недоступным? Будут ли сообщения потеряны? Если вы используете MSMQ, он не будет: Service1 будет отправлять сообщения в очередь, а Service2 отключится, когда он станет доступным.

MSMQ решит следующие распространенные проблемы:

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

Плюсы MSMQ против другого промежуточного программного обеспечения, ориентированного на сообщения:

  • бесплатно и встроенный (поставляется с Windows)
  • свет
  • хорошая интеграция с другими продуктами Microsoft (например, в .Net имеется пространство имен System.Messaging для работы с MSMQ)
  • возможности мониторинга (с использованием счетчиков perfmon: количество полученных сообщений в секунду ...)
  • транзакционные очереди
  • постоянство на диске, поэтому сообщения никогда не теряются
  • доступно через сеть (удаленные очереди)
...