たくさんのWCFサービスに基づいた製品にキュー機能を追加することを考えています。MSMQについていくつか読んだことがあります。最初はそれが必要だと思いましたが、よくわかりません。キューをデータベーステーブルに配置することを検討しています。ここの誰かがどちらに行くべきかについていくつかのフィードバックを得たのだろうか。
基本的に、http経由でファサードWCFサービスを呼び出すことを計画しています。ファサードサービスは、呼び出し側システムに高速応答を提供するために、すべての着信メッセージのみをキューに書き込む必要があります。次に、キュー内のメッセージは、キューの選択に応じて、WCFサービスまたはWindowsサービスのいずれかの別のコンポーネントによって処理される必要があります。
この製品は、2〜n台のWebサーバーを備えた負荷分散環境で実行されています。
私が検討しているオプションと私が得た質問は次のとおりです。
- ファサードWCFにMSMQへの書き込みを許可してから、別のWCFサービスにこのキューからの読み取りを行わせてメッセージの処理を実行します。私が読んだことから、この代替案について自信がないのは、これが負荷分散された環境でどのように機能するかということです。
1A。MSMQはどこに配置する必要がありますか?各Webサーバーに1つ?別のサーバーに1つ?別のサーバーに複数ありますか?(冗長性の必要性を考慮しておらず、まれにデータが失われて再送信される可能性があります)
1B。システムを冗長にしたい場合、設計はどのように影響しますか?キュー内のデータを失うことなく、MSMQを保持しているサーバー(再びオンラインになることはありません)を失う可能性があります。私がMSMQについて読んだことから、MSMQをWindowsクラスターに配置する唯一のオプションがあります。あれは正しいですか?(これにWindowsクラスターを使用することは避けたいです)。
- 2番目の設計上の代替案は、ファサードWCFサービスにキューをデータベースに書き込ませることです。次に、キューの処理を実行する2つ以上のWindowsサービスを用意します。この代替案について質問はありません。なぜ私がこれを選ばないのか疑問に思うなら、それは私がソリューションにWindowsサービスを導入せずにこれを構築したいので、MSMQが私が望まない機能を持っていると信じているからです自分でコーディングしてください。MSMQを使用したことがないので、MSMQの使用にも興味があります。
よろしくホーカン