2

たくさんのWCFサービスに基づいた製品にキュー機能を追加することを考えています。MSMQについていくつか読んだことがあります。最初はそれが必要だと思いましたが、よくわかりません。キューをデータベーステーブルに配置することを検討しています。ここの誰かがどちらに行くべきかについていくつかのフィードバックを得たのだろうか。

基本的に、http経由でファサードWCFサービスを呼び出すことを計画しています。ファサードサービスは、呼び出し側システムに高速応答を提供するために、すべての着信メッセージのみをキューに書き込む必要があります。次に、キュー内のメッセージは、キューの選択に応じて、WCFサービスまたはWindowsサービスのいずれかの別のコンポーネントによって処理される必要があります。

この製品は、2〜n台のWebサーバーを備えた負荷分散環境で実行されています。

私が検討しているオプションと私が得た質問は次のとおりです。

  1. ファサードWCFにMSMQへの書き込みを許可してから、別のWCFサービスにこのキューからの読み取りを行わせてメッセージの処理を実行します。私が読んだことから、この代替案について自信がないのは、これが負荷分散された環境でどのように機能するかということです。

1A。MSMQはどこに配置する必要がありますか?各Webサーバーに1つ?別のサーバーに1つ?別のサーバーに複数ありますか?(冗長性の必要性を考慮しておらず、まれにデータが失われて再送信される可能性があります)

1B。システムを冗長にしたい場合、設計はどのように影響しますか?キュー内のデータを失うことなく、MSMQを保持しているサーバー(再びオンラインになることはありません)を失う可能性があります。私がMSMQについて読んだことから、MSMQをWindowsクラスターに配置する唯一のオプションがあります。あれは正しいですか?(これにWindowsクラスターを使用することは避けたいです)。

  1. 2番目の設計上の代替案は、ファサードWCFサービスにキューをデータベースに書き込ませることです。次に、キューの処理を実行する2つ以上のWindowsサービスを用意します。この代替案について質問はありません。なぜ私がこれを選ばないのか疑問に思うなら、それは私がソリューションにWindowsサービスを導入せずにこれを構築したいので、MSMQが私が望まない機能を持っていると信じているからです自分でコーディングしてください。MSMQを使用したことがないので、MSMQの使用にも興味があります。

よろしくホーカン

4

2 に答える 2

2

OK、MSMQ統合でWCFを使用していないので、最終製品としてMSMQメッセージを作成するためにWCFを使用しています。これにより、「MSMQの負荷分散をどのように行うか」が簡単になります。

使用する配置は、自分に最適なものに基づいています。複数のWebサーバーが中央マシンのリモートキューにメッセージを送信するようにすることができます。代わりに、中央のマシンが新しい到着をキューにポーリングすることで、Webサーバーがメッセージをローカルキューに配置することができます。

復元力を高めるためにMSMQをクラスター化する必要はありません。代わりに、デッドレターキュー、トランザクションキュー、ジャーナル処理などを使用して失われたメッセージに対処できるように、コードを復元力のあるものにすることができます。ハードウェアクラスタリングは簡単なオプションです:-)

于 2011-05-04T19:07:06.433 に答える
0

サブジェットについてもう少し読んだ後、私はMSMQを使用しないことにしました。私は本当にこの道を行く理由がなかったようです。これは非トランザクションである必要があります。理解しているように、ジャーナリングやデッドレターの手法はどれも冗長性の要件に役立ちません。

私のすべてのコンポーネントはほとんどの時間オンラインになります(アクセスの問題が発生した場合、おそらく1年に数時間)。

MSQMは、エキサイティングなソリューション、別の手法、および追跡する別のサーバーに複雑さを追加するだけです。

MSMQでのデータ損失を防ぐために完全な冗長性を取得するには、Windowsクラスターが必要になるか、複数の同一のキューへの送信/受信を実装する必要があります。どちらもやりたくない。

これらすべてにより、受信アプリケーションの前に、データベースキューへの書き込みを行うhttp呼び出しを受け入れるWCFファサードが表示されます。このデータベースはすでにデータ損失から保護されています。キューは、すべての重いビジネスロジックを含むWindowsServceの複数のアクティブなインスタンスによってポーリングされます。プロセスの優先度が低い場合、これらのサービスは、負荷分散されたWebアプリケーションによって使用される既存のノードでホストされる可能性があります。MSMQを使用する時間があった場合、またはアプリケーションで別の理由でMSMQが必要になった場合は、決定を変更する可能性があります。

于 2011-05-10T09:30:52.917 に答える