0

ジョブの数を制限する Web データ処理用のスケジューラーをまとめたいので、Quartz.Net フレームワークを使用し、それを IHttpAsyncHandler の上に配置しました。

public void ProcessRequest(HttpContext context)
{
    // StdSchedulerFactory.GetDefaultScheduler().Start(); etc           
    Global.scheduler.start();

    // IJobDetail job = JobBuilder.Create<T>().WithIdentity(jobId, "Processing").Build(); etc
    Global.scheduler.AddProcessingJob<JobRxFormulas>(user, app, arguments);
}

引数を介して HttpContext をジョブに渡しましたが、これは正常に機能しますが、context.Session を取得したい場合は null です。これは、処理ジョブを独自のキューに追加し、HttpAsyncHandler プロセスが終了したため意味があります。私は試していませんが、結果を返すことも同じ理由で失敗すると思います:

context.Response.Write(json);

私が持っている 1 つのアイデアは、ロックを宣言して、このループを ProcessRequest に追加できるということです。

while (lock);

しかし、これが最良のアイデアであるかどうかはわかりません。

結果を返すことができるように、ハンドラーの HttpContext を維持するにはどうすればよいですか? または、Quartz ジョブからの結果を ProcessRequest に戻し (Javascript の promise のように、つまり $.when.then)、context.Response を介して送り返すこともできますか?

それとも、Quartz を完全に破棄して、最初に HttpAsyncHandler にジョブのスケジューリングを任せたほうがよいのでしょうか?

https://stackoverflow.com/questions/33642861/processing-job-scheduling-with-httpasynchandler

4

0 に答える 0