nServiceBus против Mass Transit против Rhino Service Bus против других?


104

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

Какие плюсы и минусы люди обнаружили у использования каждой из вышеперечисленных структур? Каковы преимущества их использования по сравнению с вручную созданной системой MSMQ с привязками WCF и / или решениями, не относящимися к MSMQ?

Ответы:


71

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

Возможно, вам понадобится какая-то надежная / транзакционная инфраструктура обмена сообщениями, поэтому без использования MSMQ вы останетесь с Service Broker на платформе Microsoft или какой-либо другой альтернативой, такой как ActiveMQ. Преимущество MSMQ в том, что он уже установлен на всех компьютерах с Windows, в отличие от Service Broker, которого нет.

Что касается выбора между NServiceBus, Mass Transit и Rhino Service Bus - этот ответ Stackoverflow сравнивает NServiceBus с MassTransit был бы хорошим местом для начала.

В нашем выпуске 3.1 мы представляем NSB Studio - набор интегрированных инструментов моделирования Visual Studio, которые позволяют моделировать вашу систему на более высоком уровне абстракции, и большая часть настройки и инициализации NServiceBus выполняется за вас автоматически. Я бы сказал, что это действительно склоняет чашу весов в пользу NServiceBus.

Надеюсь, это поможет.

Отказ от ответственности: я являюсь автором NServiceBus.


25
Сервисный автобус Rhino очень ориентирован на замок. Если вы не знакомы / не знакомы с Castle как с основной частью архитектуры вашего приложения, у вас могут возникнуть трудности с ним. NServiceBus и Mass Transit или более контейнерный агностик. NServiceBus поставляется с «сервером приложений», который обрабатывает размещение вашего кода, а также изменяет реализации активной инфраструктуры (например, в памяти, MSMQ и DB) при переходе вашей системы от разработчика к тесту к продукту. Он также поставляется со средствами модульного тестирования для вашей логики обработки сообщений и длительных процессов. Я не верю, что у MassTransit они есть.
Уди Дахан

35
Вероятно, стоит отметить, что Уди является АВТОРОМ NServiceBus, поэтому его мнение здесь может быть немного предвзятым. :) Сказав это, я полностью согласен и буду защищать использование NServiceBus по тем же причинам, что и он.
skb

8
@skb: согласен! Уди, вы действительно должны дать какой-то отказ от ответственности, отвечая на вопросы nservicebus, особенно такие, как этот!
Энди

14
Я все еще привыкаю к ​​тому, что NServiceBus сейчас открывают для себя люди, которые не знают, что это я создал
Уди Дахан

5
@UdiDahan: Как у nServiceBus "открытый исходный код"? Публикация исходного кода без лицензии на его использование ничего не делает для духа открытого исходного кода, которым мы делимся. Я полностью поддерживаю ваше право зарабатывать на жизнь продажей программного обеспечения (я делаю то же самое), но я думаю, что было бы намного точнее, если бы вы не рекламировали решение (пост 2.0) как открытый исходный код.
Эрик Дж

52

NServiceBus - хороший продукт, но остерегайтесь проблем с лицензированием. Он имеет тенденцию изменять свою лицензионную политику по желанию авторов. Взгляните, например, на информацию о старой лицензии.

Может случиться так, что в процессе разработки проекта вы обнаружите, что вам нужно заплатить много денег за NServiceBus.

Также у бесплатной версии есть ограничения производительности.

MassTransit - это абсолютно бесплатный проект с открытым исходным кодом, он не имеет ограничений и находится под лицензией Apache 2.0.

Я не использовал служебную шину Rhino .


1
Фактически мы предоставим новую лицензию с версией 3.1, которая позволит вам запускать ее на нескольких машинах бесплатно (хотя и с более низким уровнем пропускной способности).
Уди Дахан

11
MassTransit - ваш мужчина. Это бесплатно; нет лицензионных ограничений. Если вы можете обойтись без дизайнера потока и можете самостоятельно катить вручную, вы не сможете победить его. Он также может располагаться поверх RabbitMQ, а MSMQ имеет плагины сообщества Azure. MassTranit + RabbitMQ зарекомендовал себя как отличная стабильная среда и очень быстро позволяет вам наладить работу ваших потребителей / производителей.
Bigtoe

3
Также рассмотрите EasyNetQ (простая оболочка для rabbitMQ). Удивленный UDI не слишком важен для обсуждений с предложениями 4 хороших альтернативы 2 nServiceBus? Что я имею в виду. помочь людям в обмене сообщениями на ранних этапах. Есть много хороших простых (бесплатных) способов 2 начать работу; на самом деле не имеет значения, что вы используете, если это просто и идеально бесплатно; (бесплатно играть и бесплатно реализовывать по-настоящему, а также можно бесплатно изменять позже). Когда вы вырастете, вы разработаете собственный список проблем; в этом случае более зрелые продукты станут легким решением, с легким сокращением затрат, например, nservicebus.
Snowcode

Начиная с MassTransit 4.0 MSMQ больше не поддерживается ( masstransit-project.com/MassTransit )
MyGGaN

25

Обновление состояния Rhino vs NServicebus:

http://www.infoq.com/news/2012/04/nservicebus3-0

InfoQ для Ayende: Ранее вы сами написали служебную шину для .NET, а именно служебную шину Rhino. Следует ли пользователям Rhino Service Bus пересмотреть свое решение и перейти на NServiceBus?

Айенде: Я построил Rhino Service Bus примерно в 2008 году. Я построил его в основном потому, что меня не устраивало состояние других служебных автобусов в то время. При создании служебного автобуса у меня были разные заботы и разные направления, но это было 4 года назад. Я думаю, что за это время NServiceBus добился больших успехов в том, чтобы стать более простым в использовании продуктом и иметь гораздо лучшую историю разработки «из коробки». Если бы я сегодня начинал со служебных автобусов, я сильно сомневаюсь, что построил бы свой собственный.


9

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


7
Интересно, что большинство облачных очередей даже не поддерживают полезные нагрузки размером 100 КБ, так что это то, что нужно будет учитывать во многих приложениях в будущем.
Уди Дахан,

32
В шаблонах корпоративной интеграции (Woolf, Hohpe) шаблон проверки претензий специально решает эту проблему. Ссылка на большую полезную нагрузку сохраняется только в сообщении, сохраняя сообщение маленьким. Сообщения большого размера могут сильно снизить пропускную способность системы обмена сообщениями.
Крис Паттерсон,

4
Это не проблема NServiceBus, поскольку у них есть концепция шины данных, которая прозрачно работает в обход ограничений размера.
Халид Абухакмех
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.