インターネットに接続された分散C#クライアント用のメッセージキューイングソリューション

私は、C#のメッセージキューイングソリューションの調査の初期段階にあり、経験、教訓、戦争物語などを感謝します。MSMQの構成に関する適切な質問についてもいくつか質問があります。

簡単に言うと、私たちは分散アーキテクチャを持っています。さまざまなサーバーサイドイベントが、展開されたクライアントによって取得される作業項目を生成します。これらのクライアントはサーバーに接続し、作業を取り出して処理し、次に「作業を待っています」に戻ります。

これらのクライアントに関するいくつかの関連する詳細:

  1. We have a few hundreds of client installations today, and need to be ready for growth to tens of thousands in the next 18 months.
  2. The clients never submit tasks to the server -- they are "pull only."
  3. Payloads to the clients are <= 1K each.
  4. We don't need heavy-weight authentication nor encryption of the traffic (though that's a fine bonus)
  5. Our clients run on a variety of MS operating systems, >= WinXP-SP1. Some are parts of windows active directories, or windows domains, or ad hoc workgroups.
  6. Mostly, the clients are idle. We want to efficiently "wait for work" then respond to the work as quickly as possible (i.e., we want clients to receive the work item ASAP after it's queued)
  7. Occasionally, our clients disappear from the internet for a time: their machines are shut off for a day, or overnight, etc. We want work items to arrive when they're back online. Put another way, we do need message reliability.
  8. We control all of the client and server code, but not the client environments (though our installers do install prerequisite software like .NET 3.5, if it's not there already)

上記を踏まえて、MSMQは私たちのために「自然に」動作しますか? MSMQがドメイン/アクティブディレクトリにないときや、インターネットを介して接続しているときに、メッセージを受信するクライアントをMSMQがどのように処理するかについての明確な答えは見つかりませんでした。これまでのところ、MSMQに関する私の読書は、 "エンタープライズ中心の"ものだと感じています。企業以外の要件はMSMQの問題になるでしょうか?

同様の設定でこれまでに他にどのようなソリューションを使用していますか?

そして、もちろん、私は何を求めているのでしょうか? ;-)

ありがとう!

4

2 答え

RabbitMQはあなたのためのソリューションのように聞こえる。

RabbitMQ

RabbitMQ .NET/WCFライブラリ

3
追加された

インターネット上の中央サーバーを調べて、リモートクライアントがそれらを読むのを待っているメッセージを保持しているキューを持っているなら、MSMQはあなたのための製品ではありません。 MSMQはHTTPを使用してインターネット経由でメッセージをプルできません。 ポート135を開き、RPCプロトコルを使用する必要があります。これは必ずしもインターネット上での素晴らしいアイディアではありません。

乾杯 ジョン・ブレークウェル

2
追加された