SQLServer2005データベースバックエンドを備えた複数のIIS6WebサーバーでASP.NETアプリケーションを実行しています。
する必要がある:
外部ジョブイベントの完了についてデータベースを監視してから、
正確に1つのWebアプリケーションインスタンスにいくつかの情報をWebサービスに送信させる
(1)の場合、SqlDependencyが最善のアプローチ(または単なる古いポーリング)のようです。各Webアプリケーションインスタンスは、起動時にそのような依存関係を登録します。(「マスター」インスタンスを構成したくないのは、そのインスタンスが失敗すると、他のインスタンスが使用可能であってもタスクが続行されないことを意味するためです。したがって、私の設計では、実行可能なインスタンスがあるかどうかを確認します。作業が終わったら、作業を進める必要があります。)
(2)については、次の行に沿って、(1)でSqlDependency通知を受信すると、Webアプリケーションインスタンスが更新しようとする何らかのフラグをデータベースに含めることを考えていました(非常に単純化されています)。
UPDATE StatusTable SET TaskStatus = 1 WHERE TaskStatus = 0
SELECT @@ROWCOUNT
TaskStatusを更新できるアプリケーションインスタンスは1つだけであるため、@@ ROWCOUNT> 0のインスタンスは1つだけです。これが、情報をWebサービスに送信するために「選択」されたインスタンスになります。
このアプローチの欠点は何ですか?私の他のオプションは何ですか?(注:この作業を行う別のサービスはオプションではありません。)