

現在、[Hangfire](https://www.hangfire.io/)を使って定期的にバックグラウンド処理を動かしているのですが、  
RecurringJobによる定期実行処理だと最小が1分間隔になります。

[code]

    RecurringJob.AddOrUpdate(
        () => Console.WriteLine("Recurring!"),
        Cron.Minutely);
    
[/code]

秒単位(例えば10秒間隔)で動かしたいのですが、良い方法はありますでしょうか。  
豊富な管理コンソールが魅力なので出来ればこのままHangfireを活用したいのですが、似たような使い方が出来るサービスがあればそれでもかまいません。

宜しくお願い致します。


CC BY-SA 3.0
2017-07-24T00:44:48.617
36624
2021-10-03T04:07:15.783
2017-08-04T02:35:30.603
2238
20991
question
asp.net
asp.net coreで秒単位で定期的に動かせるジョブ管理サービスはありますか？


Quartz Enterprise Scheduler .NET  
<https://www.quartz-scheduler.net/>

Quartz.NET 3.0は、現時点でAlpha版ですがCore対応・秒単位の定期実行があり合いそうです。（試したことは無いです。）

「Build a trigger for a specific moment in time, then repeating every ten
seconds ten times」のサンプルが参考になります。  
<https://www.quartz-
scheduler.net/documentation/quartz-2.x/tutorial/simpletriggers.html>

[code]

    trigger = TriggerBuilder.Create()
        .WithIdentity("trigger3", "group1")
        .StartAt(myTimeToStartFiring) // if a start time is not given (if this line were omitted), "now" is implied
        .WithSimpleSchedule(x => x
            .WithIntervalInSeconds(10)
            .WithRepeatCount(10)) // note that 10 repeats will give a total of 11 firings
        .ForJob(myJob) // identify job with handle to its JobDetail itself                   
        .Build();
    
[/code]


CC BY-SA 3.0
2017-08-04T01:52:10.660
36920
2017-08-04T02:34:46.163
2017-08-04T02:34:46.163
2238
2238
36624
answer


すみません。環境がないため動作確認できていませんが、`Hangfire`では`NCronTab`により秒単位の指定ができるようです。([added
support for seconds in NCronTab
expressions](https://github.com/HangfireIO/Hangfire/pull/368))

6個のフォーマットで指定すれば、左端に秒を指定できるため、以下のようにすれば、解決するかもしれません。([NCronTab](https://github.com/atifaziz/NCrontab))

[code]

    RecurringJob.AddOrUpdate(
        () => Console.WriteLine("Recurring!"),
        "*/10 * * * * *");
    
[/code]


CC BY-SA 4.0
2018-07-08T06:55:16.837
45414
2018-07-08T06:55:16.837
36624
answer