2

設定された時間間隔でキューに入れられたリクエストを処理できるサービスを作成する必要があります。たとえば、Webにアクセスしてサイトから財務データを取得するには、リクエストを1秒に1回に制限する必要があります。私はWCFを初めて使用しますが、(1)MSMQを使用したWCFがこれを実装するための適切な選択であるかどうかわかりません。(2)もしそうなら、間隔を強制するための最良のメカニズムは何ですか?スレッド待機?タイマー(それがどのように機能するかわからない)。

4

3 に答える 3

2

これを明示的に処理できるWCFには何も組み込まれていないため、すべての作業を自分で行う必要があります。

サービスは確かにMSMQからの要求を処理できますが、WCFのMSMQリスナーはできるだけ早くメッセージを選択して処理します。X秒ごとにのみメッセージを処理するように構成することはできません(適切なツールがあれば偽造することもできますが、それほど素晴らしいとは言えません)。

リクエストの処理間の遅延がそれほど短くない場合の1つのオプションは、保留中のリクエストを保持するために中間キューを使用することです。つまり、実際の要求を送信するものはすべて、誰も直接リッスンしていないキュー(キューA)に書き込みますが、WCFサービスは別のキュー(キューB)でリッスンします。次に、X秒/分などごとに1回実行され、キューAからキューBにメッセージを1つだけ移動して、実際のWCFサービスの実行をトリガーする他の何か(タスクスケジューラから実行されるスクリプトのように単純な場合があります)を用意します。

于 2010-04-07T18:12:01.607 に答える
2

WCFとMSMQは素晴らしいチームです!間違いなくチェックする価値があります。

WCFが箱から出して提供しない部分は、「x秒ごとにチェックする」です。ここでの最善のアプローチは、Windows NTサービス内でWCFサービスをホストし、NTサービス内にx秒ごとに1回だけMSMQキューをチェックするタイマーを設定することです。本当に、実装するのはそれほど難しいことではありません。優れている点は、NTサービス内でWCFサービスを非常に簡単にセルフホストできることです。わずか数行のコードで、何がいつ発生するかを完全に制御できます。詳細については、管理対象アプリケーションでWCFサービスをホストする方法に関するMSDNドキュメントを参照してください。

資力:

于 2010-04-08T07:19:08.713 に答える
0

または、代わりにウィンドウサービスを使用してメッセージを使用することもできます。投稿されたらすぐにメッセージを消費するWCF機能を使用していない場合は、そもそもwcfを使用する理由がない可能性があります。

于 2010-04-07T23:19:22.660 に答える