2013-09-30 3 views
33

Я хотел бы сделать осознанный выбор в отношении простой архитектуры публикации/подписки.Что добавляет Windows Service Bus в MSMQ?

Так что мне интересно: Что Сервисная шина добавляет, что MSMQ не может сделать?
Каковы недостатки Сервисной шины?

Thx для просвещения меня!

+1

+1, интересный вопрос. Я не очень разбираюсь в Windows Service Bus, мне бы хотелось увидеть подробное сравнение с MSMQ. Я нашел это (см. Комментарии к статье): http://shanthuk.com/2012/11/05/windows-service-bus-vs-msmq/ Для чего это стоит, я успешно использовал MSMQ в моих архитектурах много раз и определенно рекомендую: легкий, надежный, транзакционный. См. Http://stackoverflow.com/a/9077925/870604 – ken2k

+0

Чтобы добавить (как это часто упускается из виду), если вы вообще используете Sql Server, а также рассмотрите Service Broker, который является системой обмена сообщениями внутри инфраструктуры базы данных. – Rikalous

+0

Я рекомендую вам использовать NServiceBus http://nservicebus.com/CodeFirstGettingStarted.aspx – wudzik

ответ

19

Главное функциональное различие заключается в том, что служебная шина обеспечивает поддержку для обмена семантикой обмена сообщениями, такую ​​как маршрутизация по темам, через публикацию-подписку.

MSMQ, с другой стороны, представляет собой легкую систему массового обслуживания в режиме «вперед и назад», которая поддерживает одноточечный обмен сообщениями «точка-точка».

Service Bus:

  1. зависит от SQL Server, и
  2. является broker. This may be considered a drawback.

Если вы смотрите на пабе-суб рамки, тогда популярный один на данный момент (бесплатно в режиме однотридовой) является NServiceBus, который сидит на вершине MSMQ, хотя и имеет своп-состоянии транспорта.

+1

Спасибо за ваш ответ, который полезен и документирован ссылками. +1 за ответ и бонус репутации за репутацию для вас :) – ken2k

+1

@ ken2k очень милостив к вам ... честно говоря, не ожидал щедрости, и я удивлен, что лучшие ответы, чем мои, были опубликованы. Думаю, эта тема заслуживает лучшего обсуждения. –

+0

Спасибо за ссылку на страницу «bus-and-broker-pubsub-difference» - был информативным. – eddiewould

8

Pros

  • Service Bus позволяет публиковать через TCP и HTTP, который прохладно, и дает вам больше развязку.
  • Service Bus - это база данных sql, поэтому ваше аварийное восстановление проще, и намного дешевле реализовать.

Против

  • Service Bus централизован, и MSMQ является федеративным, поэтому потенциально более масштабируемым. Хотя вы можете масштабировать с большим количеством узлов в WSB.
  • Перед публикацией вам необходимо подключиться к центральному автобусу. Таким образом, MSMQ объединяется (на каждом компьютере) делает его более доступным для клиентов.

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

У нас есть хороший опыт работы с Service Bus вместо MSMQ на данный момент.

+0

можете ли вы описать последний сценарий еще немного? используя MSMQ в качестве локального хранилища с SB? Означает ли это, что вы всегда ставите клиентское сообщение в очереди MSMQ, а затем как SB использует это? –

+1

У вашего веб-сервера установлен msmq, как и ваш Sb-сервер. На вашем клиентском сайте реализуется политика повторной попытки Sb, когда сначала пытается публиковать на Sb напрямую. Если эти сбои запирают msg на локальном msmq и используют встроенный механизм Store и forward для доставки на msmq на сервере Sb (когда он становится доступным.) У вас есть служба Windows на сервере sb, который загружает сообщения msmq в очереди sb. В качестве альтернативы добавьте больше узлов sb в вашу ферму для большей доступности. – jonho

Смежные вопросы