NServiceBus против MassTransit

Я борюсь со списком плюсов и минусов в отношении NServiceBus и MassTransit.

Теперь я знаю, что здесь уже есть тема, но она не отвечает на мои вопросы.

Вот что я прочитал до сих пор:

  1. NServiceBus, да, он лицензирован и не предоставляется бесплатно.
  2. MassTransit, да, это открытый исходный код, но в документации, похоже, не хватает.

NServiceBus старше и имеет больше ссылок. Трудно найти материал о MassTransit, но я непредубежден. Однако я должен предоставить твердое решение, и поэтому я должен спросить.

Поэтому, пожалуйста, кто-то с опытом работы с обеими платформами. Почему я должен выбрать NServiceBus? ИЛИ Почему я должен выбрать MassTransit?

Это производительность, безопасность, масштаб или?

6 ответов

Решение

Если бы мне пришлось подвести итог, вот что я бы сказал:

Если вам нужна коммерческая поддержка, обратитесь за NServiceBus. Если вам удобно использовать форумы в качестве средства поддержки, MassTransit - отличный вариант. До сих пор разработчики очень чутко реагировали на наши проблемы. Если вы выбираете MassTransit, теперь вы будете выбирать между MSMQ и RabbitMQ. Если вам нужен DTC, идите с MSMQ. Если вам нужны дополнительные функции и улучшенное администрирование, пользуйтесь RabbitMQ.

В нашем проекте мы перешли с NServiceBus на MassTransit по двум причинам:

  1. MassTransit бесплатный
  2. Мы любим RabbitMQ

Я использовал обе платформы. Я использовал MassTransit дольше, чем NServiceBus. Вот основные моменты, как я их вижу.

Стоимость:

  • MassTransit имеет лицензию Apache 2.0 и бесплатен для коммерческого использования, в то время как NServiceBus - нет.

Служба поддержки:

  • Как упомянул Уди, есть опция для коммерческой поддержки NServiceBus, я не видел этого для MassTransit.

Транспорт:

  • MassTransit поддерживает MSMQ и RabbitMQ
  • NServiceBus поддерживает только MSMQ RabbitMQ поддерживается в NServiceBus 4+

RabbitMQ против MSMQ:

  • MSMQ поддерживает DTC (координатор распределенных транзакций) для транзакций, включающих несколько процессов на потенциально нескольких машинах (например, SQL-сервер, служба Windows)
  • RabbitMQ имеет отличный интерфейс администрирования
  • MSMQ существует дольше и является продуктом Microsoft
  • RabbitMQ является более новым, открытым исходным кодом, бесплатным и спонсируется VMWare
  • MSMQ установлен на большинстве компьютеров с Windows по умолчанию

Уди Даан и парни из MassTransit (Крис Паттерсон, Дрю Селлерс и Трэвис Смит) - замечательные люди.

Как первоначальный автор NServiceBus, я явно склонен к своей собственной технологии, поэтому я постараюсь сохранить ее максимально сбалансированной.

Обновление: теперь есть инструменты мониторинга и отладки, доступные для NServiceBus через Платформу Особых Сервисов, которые значительно упрощают создание и запуск систем на основе сообщений. С полной технической целостностью я считаю, что это сильно нарушает баланс в пользу NServiceBus. Конец обновления

Хотя в первые дни я отслеживал большую часть разработки MassTransit, у меня не было много времени, чтобы сделать это в последнее время, поэтому я предположу, что обе технологии одинаково хороши сами по себе и вместо этого сосредоточены на экосистеме.

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

С NServiceBus компании могут приобрести поддержку и получить гарантированное время ответа на свои вопросы - 24x7 по всему миру. Я не верю, что подобное предложение доступно от парней MassTransit.

С точки зрения офлайн, по всему миру доступны общедоступные курсы по NServiceBus, а также множество консультантов, которых можно пригласить на место, чтобы запустить проект или помочь в случае возникновения проблем. Я слышал от нескольких компаний, которые решили перейти с MassTransit на NServiceBus, потому что они не могли найти кого-то на месте, когда им это нужно.

Я бы сказал, что модели лицензирования NServiceBus достаточно гибкие, чтобы удовлетворить любой бюджет, как указывает широкий спектр клиентов, и могут быть вполне оправданы для руководства. Конечно, с MassTransit, лицензирование бесплатно.

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

Чтобы дать более свежий ответ, я профессионально разработал обе экосистемы, и теперь обе они поддерживают широкий спектр технологий MQ и.NET Core.

Несколько лет назад я использовал NServicebus в новом облачном продукте, нам требовалось.NET Core, которое Mass Transit в то время не поддерживал. Я должен сказать - это прекрасная вещь для использования в качестве разработчика, есть много хороших лайнеров, отличный инструментарий / мониторинг и действительно хорошая документация.

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


Я использую Mass Transit в течение нескольких месяцев в новой компании, и они предпочитают иметь бесплатную библиотеку с открытым исходным кодом. Путь был немного сложнее - документация по MT местами отсутствует, а многие примеры / проблемы устарели. Здесь также не так много дополнительных функций, но они могут вам не понадобиться для их варианта использования.

Тем не менее, он работает нормально, и разработчики MT, похоже, приложили ОЧЕНЬ много усилий для поддержки своего OSS - намного больше, чем вы могли ожидать.

Итак, лично мой TLDR был бы таков: получите NServicebus, если ваша компания может быть убеждена заплатить за него, но MT - это удобная альтернатива и лучшее, что вы можете получить бесплатно.

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

Ребусу сейчас около 8 лет, и он использовался для перемещения денег и управления электростанциями с самого начала.

Он поддерживает большинство базовых систем очередей, таких как MSMQ, RabbitMQ, Azure Service Bus, очереди хранения Azure, Amazon SQS и т. Д., Но также поддерживает более забавные вещи, такие как использование MSSQL, PostgreSQL и Oracle в качестве транспорта.

Вики-документация довольно обширна, хотя многим кажется, что API Rebus так легко обнаружить.

Ребус всегда был (и всегда будет) совершенно свободен. Это MIT-лицензия, так что вы можете делать с ней то, что чувствуете.

Если вы стали серьезным пользователем Rebus и вам необходимо официальное соглашение о поддержке и дополнительные инструменты, вы можете подписаться на Rebus Pro, который предлагает Rebus FM (компания, стоящая за Rebus).

Упомянутый выше "дополнительный инструментарий" представлен в виде Fleet Manager, который может помочь с вещами. Например, Fleet Manager полностью заменяет очереди ошибок, поэтому вместо них хранятся сообщения об ошибках. Это означает, что сообщения с ошибками можно просматривать, обрабатывать и повторять в любое время с помощью нескольких щелчков мыши в Fleet Manager.

Вы всегда можете использовать Shuttle (FOSS): https://github.com/Shuttle/shuttle-esb:)

Документация (постоянно улучшается): http://shuttle.github.io/shuttle-esb/

Проект Shuttle идет уже почти 2 года и использует производственные системы. Это будет вопрос выбора того, что резонирует с вами.

NServiceBus имеет хороший послужной список. Я использовал его ранее в производственной системе (1.9), но не с тех пор, как она стала коммерческой (момент, когда я начал с Shuttle).

Я не пробовал MassTransit.

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

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

Кажется, MSMQ в Masstransit устарел.

Другие вопросы по тегам