1

現在、2 つの Windows サービスを構築しています。

  • 1 つ目は、インターネット接続からメッセージを取得し、データベースに挿入します。これは、高速で安定しており、他の処理を行わないように設計されています

  • 2 つ目は、前回の実行以降に到着した新しいメッセージを使用してバッチ プロセスを実行します。

新しいメッセージを処理する準備ができたときにのみ 2 番目のサービスがバッチ プロセスを実行し、2 番目のサービスでエラーが発生した場合は最初のサービスが続行し、その逆も同様になるようにする方法を考えています。現時点では、5 秒ごとにループを使用しています。

私は現在、キューが空の場合にのみ最初のサービスがメッセージを書き込み、2 番目のサービスがキューにメッセージが含まれているかどうかを確認するメッセージ キューの使用を考えています。メッセージを削除して実行します。したがって、実際にはキューとしてではなく、状態が変化したときに 2 番目のサービスに対してイベントがトリガーされるバイナリ スイッチとしてキューを使用します。

私が遭遇したことのないこれを行うためのより良い方法があると思いますが、誰かが私を正しい方向に向けてくれますか?

4

2 に答える 2

2

実際、あなたの方法は、これらの結果に対してこれを実装する方法とまったく同じです。MSMQ では、メッセージがキューに書き込まれているかどうかを確認する必要はありません。最初のサービスはキューに書き込むだけで、2 番目のサービスはそれを読み取って処理します (アクティブな場合)。

MSMQ を使用する利点は、いずれかのサービスがダウンしていても、キューがアップしているため、処理を続行できることです。

于 2009-01-28T17:58:12.113 に答える
1

この場合、必要なのはメールスロットだけのように見えます。最初のサービスは DB に格納され、「作業」メッセージを送信します。もう 1 つは受信メッセージを待つだけです。

MSMQ は、この単純なものに対して少し重いです。次に、MSMQ を使用して、その DB を完全に削除することもできます。 それはそれを行う方法です。

于 2009-03-08T18:49:23.577 に答える