私のアプリケーションでは、いくつかのクォーツジョブが実行されています。すべてがうまくいきます。私がしたいのは、ローカルマシンでそのアプリケーションを使用しているときにジョブを実行しないことだけです。つまり、ジョブはサーバー上でのみ実行し、必要なときにのみローカルで実行する必要があります。
ブール値の定数を追加する解決策があることは知っていますが、それ以外の場合は実行されないジョブは実行されませんが、実行する方法と場所はどこですか?
また、他にもできることがあれば教えてください。
public class JobScheduler
{
public static void Start()
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
IJobDetail offersRefreshJob = JobBuilder.Create<OffersRefreshJob>().Build();
ITrigger triggerForOffersRefreshJob = TriggerBuilder.Create().WithDailyTimeIntervalSchedule
(s =>
s.WithIntervalInMinutes(8)
.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(0, 0))
)
.Build();
scheduler.ScheduleJob(offersRefreshJob, triggerForOffersRefreshJob);
}
}
これはGlobal.asax.csファイルのコードです。私はブール型のRUN_JOBS変数を使用していて、RUN_JOBSがtrueの場合にのみstart()を呼び出しましたが、それでもローカルマシン上でジョブを実行しています。これはASP.net MVC Webアプリケーションです。
public class MvcApplication : System.Web.HttpApplication
{
public bool RUN_JOBS = true;
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
if (RUN_JOBS)
{
JobScheduler.Start();
}
}
}
デバッグ用にローカルで実行していますか?スケジューラのコードを投稿できますか? – Seany84
@ Seany84私は自分のスケジューラのコードを追加しました。はい、デバッグの目的で実行しています。私は自分のローカルデータをすべてリフレッシュしたくありません。そのような仕事はたくさんありますが、私はちょうど1つのコードを投稿しました。 –
1.あなたの 'Start()'はどこから呼び出されていますか?そのコードも投稿できますか? 2. Quartzは、コンソールアプリケーションまたはWindowsサービスで実行されていますか? – Seany84