マルチキャスト、メッセージング、ActiveMQ とMSMQ?
質問
私は製品のメッセージング/通知システムの開発に取り組んでいます。基本的な要件は次のとおりです。
- 火をつけて忘れる
- 送信者が削除するよう指示するまで存在する、永続的なメッセージのセット (場合によっては更新される)
ライブラリは C# で書かれます。Spring.NET は、多くの優れたメッセージング抽象化を備えたマイルストーン ビルドをリリースしたところです。これは素晴らしいものです。私はこれを広範囲に使用するつもりです。私の基本的な質問は、メッセージ ブローカーの問題になります。私のアーキテクチャは、アプリ -> メッセージブローカーキュー -> リッスンし、すべてのメッセージを必要な場所にディスパッチし、それらの長期メッセージのライフサイクルを処理するサーバーアプリ -> メッセージブローカーキューまたはトピック -> リスニングのようなものになります。アプリ。
最後に質問です。どのメッセージ ブローカーを使用すればよいですか?私は~に偏見を持っています アクティブMQ - 前回のプロジェクトで使用しましたが、とても気に入りました。これに対する攻撃は思い当たりませんが、これは Java であり、サーバーのどこかに Java をインストールする必要があり、このサービスを使用する一部の人々にとっては難しいかもしれません。私が検討しているもう 1 つのオプションは MSMQ です。私は何らかの理由でそれに対して偏見を持っていますが、マルチキャストのサポートも優れていないようです。
このような目的で MSMQ を使用した人はいますか?賛否両論、どちらかに投票を左右する可能性のあるものはありますか?
最後にもう 1 つ、.NET 2.0 を使用しています。
解決
仕事をしているとちょっと偏見を持ってしまいます アクティブMQ しかし、上記で MSMQ について列挙した利点のほぼすべては、実際には ActiveMQ にも当てはまります。
ActiveMQ のその他の利点としては、次のようなものがあります。
- に対する素晴らしいサポート 言語を超えたクライアント アクセスとマルチプロトコルのサポート
- ~に対する優れたサポート エンタープライズ統合パターン
- トンの 高度な機能 のように 排他的キュー そして メッセージグループ
あなたが言及した主な欠点は、ActiveMQ ブローカーが Java で書かれていることです。ただし、本当に必要な場合は、IKVM 上で .net アセンブリとして実行することもできます。また、Windows サービスとして実行することも、GCJ 経由で DLL/EXE にコンパイルすることもできます。MSMQ は .NET で書かれていることもあれば、そうでないこともありますが、その実装方法はあまり重要ではありません。
MSMQ と ActiveMQ のどちらを選択するかに関係なく、少なくとも、 NMS API あなたが言うように、これはSpring.NETにうまく統合されています。この API の MSMQ 実装のほか、TibCo、ActiveMQ、STOMP の実装もあり、これらは他の JMS プロバイダーをサポートします。 ストンプコネクト.
したがって、API として NMS を選択すると、独自のテクノロジーへのロックインが回避され、いつでもメッセージング プロバイダーを簡単に切り替えることができます。コードをすべて独自の API にロックするのではなく、
他のヒント
MSMQ の長所。
- Windowsに組み込まれています
- トランザクションをサポートし、トランザクションのないキューもサポートします
- セットアップは本当に簡単です
- ADの統合
- これは高速ですが、どちらが速いかを知るには、トラフィックの ActiveMQ と MSMQ を比較する必要があります。
- .NET はそれをサポートします
- ファイアアンドフォーゲットをサポート
- 見るだけの読者がいる場合は、キューを覗いてみることもできます。キュー内のメッセージを編集できるかどうかわかりません。
短所:
- 4MBのメッセージサイズ制限
- 2GBのキューサイズ制限
- キューアイテムはディスク上に保持されます
- 主流の MS 製品ではないので、ドキュメントは少し曖昧です。または、私が使用してから数年経っています。
こんな方におすすめのブログはこちら MSMQ
を見てみましょう ゼロエムク. 。これは、最も高速なメッセージ キューの 1 つです。
TIBCO Enterprise Messaging Service - EMS を参照することをお勧めします。これは、マルチキャスト、ルーティング、JMS 仕様をサポートし、ファイル/データベースを使用したファイアフォーゲットやメッセージ永続化などの要件を含むエンタープライズ規模の機能を提供する高性能メッセージング製品です。共有状態。
参照として、FedExはTIBCO EMSをメッセージングインフラストラクチャとして実行しています。
http://www.tibco.com/software/messaging/enterprise_messaging_service/default.jsp
他にもたくさんの参考文献があるので、私が提供したら、あなたは本当に驚かれるでしょう。
そのアリーナには非常に多くのオプションがあります...
無料:MantaRay は、完全に JMS 準拠のピアツーピア システムです。Mantaray の興味深い点は、メッセージの送信先を定義するだけで済み、MantaRay はとにかくメッセージを目的地に届けるためにメッセージをルーティングすることです。そのため、メッセージング ファブリック内の個々のノードの障害に対する耐性が高くなります。
有料:私は本業で数百のノードを備えた IBM WebSphere MQ メッセージング システムを管理していますが、それが非常に優れていることがわかりました。最近 Tibco EMS も購入しましたが、これもかなり使い心地が良さそうです。
ポール/