2016-08-25 5 views
2

私はQuartz.NETを新しく導入しましたが、私の問題のために実行中のソリューションを作成することができました。 Windowsサービスとして実行されるリモートサーバーインスタンスがあります。これらのインスタンスのジョブストアは、SQLLiteバックエンドを持つAdoJobStoreです。 クライアントアプリケーションは、リモートスケジューラプロキシ経由でリモートでジョブを実行できます。リモーティングとクラスタリングの組み合わせ

ここでは、リモート実行とクラスタリングを組み合わせる必要があります。ここでは、リモートサーバー用のスケジューラープロキシのインスタンス化に苦労しています。スケジューラーがクライアント上に作成されると、サイド・アドレスとポートはスケジューラー・ファクトリーのプロパティーで明示的に構成されます。

いくつかのリモートサービスと1つのクライアント(Quartz.NET機能のロードバランシングを使用してこれらのサーバ上でジョブを開始する必要がある)で構成されるアーキテクチャでは、各ジョブを特定のサーバアドレスに明示的に開始すると、私に感覚。

  1. クライアントアプリケーションはクラスタにジョブをどのようにして提供し、どのようにクラスタを構成する必要がありますか(たとえば、サーバーのIPアドレスとポートを使用するリストなど)?
  2. さらに、Quartz.NETサーバーインスタンスを使用してデータベースを共有する方法と、サーバーでSQLLiteを使用する方法についてはどうしたらよいですか?

一方、私は仕事に私のシステムを得ることができた私がしなければならない、さらに読書のための有用な任意のヒントをありがとう、
マリオ

答えて

0

。私の質問「クラスタリングの組み合わせ&クラスタリング」の答えは次のとおりです。これらの機能は、必要ではないので、組み合わせないでください。分散クラスタの実装のために

  1. は、(あなたの最初の開発ステップは、単一のリモートサーバとクライアントを作成していた時見つけるのは難しい)すべてのリモーティングを使用しないでください。 ジョブの分散、したがってインスタンスの「接続」はすべて、同じデータベースを使用することによって行われます。その理由は、SQL Expressを使用するためです。

  2. ローカル(クライアント)スケジューラインスタンスを起動しないでください。

  3. クラスタ内のリモートサーバーによってすべての作業が実行されている場合でも、ローカルの作業スレッドはすべて表示されません。私の期待は、このアプリケーション内でジョブを開始したくないので、ローカルアプリケーションのスレッドが0のスケジューラーを使用することでした。
  4. 未解決問題:クラスタでジョブが実行されたときに呼び出されるリスナーを登録する方法がないようです。だから私はジョブの状態(開始時刻、終了時刻、実行されたノード、..)を追跡するために自分のフィードバックチャンネルジョブ - >開始アプリを構築しなければならない。
  5. 未解決の課題:SimpleThreadPool

    における局所(WPF)アプリケーションがユーザによって閉じられているエンドレスループ
    while (runnable == null && run) 
    { 
        Monitor.Wait(lockObject, 500); 
    } 
    

    が終了されるのプロセスを妨げます。

関連する問題