nServiceBus vs Mass Transit vs Rhino Service Bus vs other?


104

メッセージングシステムを使用して、うまく分離されたワークフローシステム内のファイルを処理するために、いくつかのクイックスパイクを実行するだけです。

上記の各フレームワークを使用することで人々が見つけた長所と短所は何ですか?これらをWCFバインディングや非MSMQソリューションで手動でロールしたMSMQシステムと比較して使用する利点は何ですか?

回答:


71

トランザクションを処理する方法、例外によってロールバックが発生する方法、ロールバックを無限に停止する方法(有害メッセージ)など、適切に取得する必要があるいくらか難しいものがあるため、手作業での解決策は避けてください。状態管理の境界が揃うように、長時間実行されるワークフローと統合する方法など。

おそらく何らかの耐久性のある/トランザクションメッセージングインフラストラクチャが必要になるため、MSMQを使用せずに、MicrosoftプラットフォームのService Broker、またはActiveMQのような他の代替手段を使用します。MSMQには、Service Brokerがインストールされていないのとは対照的に、すべてのWindowsマシンにすでにインストールされているという利点があります。

NServiceBus、Mass Transit、Rhino Service Busのいずれかを選択するという点で、NServiceBusとMassTransit比較するこのStackoverflowの回答は、開始するのに適しています。

3.1リリースでは、NSB Studioを導入します。NSBStudioは、より高い抽象化レベルでシステムをモデル化し、NSeriveBusの多くの構成と初期化を自動的に行うことができるVisual Studio統合モデリングツールのセットです。これは、NServiceBusを支持するスケールのヒントになると思います。

お役に立てば幸いです。

免責事項:私はNServiceBusの作成者です。


25
Rhino Service Busは非常に城中心です。アプリケーションアーキテクチャのコアパーツとしてのCastleに慣れていない/快適でない場合は、問題が発生する可能性があります。NServiceBusおよびMass Transitまたはそれ以上のコンテナにとらわれない。NServiceBusには、システムを開発からテスト、本番に移行する際に、コードのホスティングとアクティブなインフラストラクチャの実装(インメモリ、MSMQ、DBなど)の変更を処理する「アプリケーションサーバー」が付属しています。また、メッセージ処理ロジックと長時間実行プロセス用のユニットテスト機能も備えています。MassTransitにこれらがあるとは思いません。
Udi Dahan、

35
UdiがNServiceBusの作者であることはおそらく注目に値するので、彼の意見はここで少し偏っているかもしれません。:)そうは言っても、私は完全に同意し、彼が行ったのと同じ理由でNServiceBusの使用を提唱します。
skb

8
@skb:同意した!Udi、nservicebusの質問、特にこのような質問に答えるとき、あなたは本当にある種の免責事項を与えるべきです!
アンディ

14
私はまだ、自分が作成したことを知らないNServiceBusを人々が発見しているという事実に慣れています
Udi Dahan

5
@UdiDahan:nServiceBusはどのように「オープンソース」ですか?使用するためのライセンスなしでソースコードを公開しても、オープンソースの精神である共有には何の影響もありません。私はあなたが生きている販売ソフトウェアを獲得するあなたの権利を完全にサポートします(私も同じです)が、ソリューション(ポスト2.0)をオープンソースとして宣伝しなかった方がはるかに正確だと思います。
エリックJ.

52

NServiceBusは優れた製品ですが、ライセンスの問題に注意してください。著者の望むように、ライセンスポリシーを変更する傾向があります。たとえば、古いライセンス情報を見てください。

プロジェクト開発の途中で、NServiceBusに多額のお金を払わなければならないことがわかる場合があります。

また、無料版にはパフォーマンスの制限があります。

MassTransitは完全に無料のオープンソースであり、制限はなく、Apache 2.0ライセンスに基づいています。

Rhino Service Busを使用していません。


1
実際には、バージョン3.1で新しいライセンスを提供し、複数のマシンで無料で実行できるようにします(スループットのレベルは低くなります)。
Udi Dahan、2012年

11
MassTransitはあなたの男です。それは無料です; ライセンス制限はありません。フローデザイナーなしで実行でき、自分でハンドロールできる場合、それを打ち負かすことはできません。RabbitMQの上に配置することもでき、MSMQにはコミュニティAzureプラグインがあります。MassTranit + RabbitMQは、優れた安定した環境であることが証明されており、すぐにコンシューマー/プロデューサーを稼働させることができます。
Bigtoe 2012

3
EasyNetQ(rabbitMQの単純なラッパー)についても検討してください。驚きのUDIは、提案を伴う議論に重点を置いていません4良い代替案2 nServiceBus?私が意味したのは。初期の段階でメッセージングの旅の人々を助けます。簡単な(無料の)方法が2つあります。簡単で理想的には無料である限り、何を使用してもかまいません。(無料でプレイでき、無料で実装でき、後で自由に変更できます)成長したら、懸念事項の独自のリストを作成します。その時点で、より成熟した製品は簡単な決定であり、たとえばnservicebusなどのコストの正当化は容易です。
スノーコード

MassTransit 4.0のとおりMSMQはサポートされなくなりました(masstransit-project.com/MassTransit
MyGGaN

25

RhinoとNServicebusの状態の更新:

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

InfoQからAyende: これまでに、.NET用のサービスバス、つまりRhinoサービスバスを作成しました。Rhino Service Busのユーザーは今再考してNServiceBusに移行する必要がありますか?

Ayende:私は2008年頃にRhino Service Busを作成しました。その主な理由は、当時他のサービスバスの状態に満足できなかったためです。サービスバスを構築するときに、さまざまな懸念と方向性がありましたが、それは4年前のことです。その時、私はNServiceBusがより使いやすい製品になり、箱から出してすぐに開発のストーリーを伸ばすことに大きな進歩を遂げたと思います。今日のサービスバスから始めたとしたら、自分でバスを作るのではないでしょうか。


9

MSMQベースの潜在的な欠点は、最大メッセージサイズの制限です。IIRCのサイズは約4MBです。大きなファイルを処理していて、ファイルのコンテンツをメッセージ内に保存している場合は、簡単に実行される可能性があります。


7
興味深いことに、ほとんどのクラウドベースのキューは100KBのペイロードもサポートしていないため、これは将来多くのアプリで考慮する必要があります。
Udi Dahan、

32
エンタープライズ統合パターン(Woolf、Hohpe)では、クレームチェックパターンは特にこの懸念に対処します。大きなペイロードへの参照はメッセージにのみ保持され、メッセージを小さく保ちます。メッセージサイズが大きいと、メッセージングシステムのスループットに大きな影響を与える可能性があります。
クリスパターソン

4
NServiceBusにはデータバスの概念があり、サイズの制限を透過的に回避するため、これはNServiceBusの問題ではありません。
Khalid Abuhakmeh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.