私は、Quartz.netを使用してさまざまなAPI呼び出しをスケジュールしています。 私が使用しているAPIは、期間ごとに行うことができる要求の数を制限し、それを超えた場合、次の分のためにアカウントにペナルティが課されます(要求はありません)。Quartz.netでは、スケジュールされたすべてのジョブを一定の時間間隔でどのように遅延させることができますか?
私はあまりにも多くのリクエストを行い、次の1分間アカウントが抑制されるという通知を受け取った場合、その期間中にスケジュールされたジョブが起動しないようにする必要があります。スケジュールされたすべてのジョブの起動を1〜2分遅らせるにはどうすればよいですか?
私はもともと上Scheduler.GetTriggerKeys()とループを呼び出し、そのように、すべての既存のトリガを更新しようとした
foreach(var triggerKey in SchedInstance.GetTriggerKeys(GroupMatcher<TriggerKey>.AnyGroup()))
{
var oldTrigger = SchedInstance.GetTrigger(triggerKey);
TriggerBuilder tb = oldTrigger.GetTriggerBuilder();
// Update the schedule associated with the builder and build the new trigger
tb.StartAt(oldTrigger.StartTimeUtc.AddSeconds(63));
var newTrigger = tb.Build();
SchedInstance.RescheduleJob(oldTrigger.Key, newTrigger);
}
は、これは正しいアプローチですか単にのために、スケジューラを停止する方が良いだろう同じ期間にして再起動しますか?
あなたのアプリケーションはあなたのアカウントが絞られたときを知っていますか? – Rabban
@Rabban、はい、1分あたりの許容コール数を超過したために失敗した場合は、API呼び出しから特定のコードを受け取ります。その特定のコードを受け取ったとき、私たちは次の分のためにスロットルになることを知っています。 –