HangFireをテストするコンソールアプリケーションがあります。コードは次のとおりです。
using System;
using Hangfire;
namespace MyScheduler.ConsoleApp
{
internal static class Program
{
internal static void Main(string[] args)
{
MyMethod();
Console.WriteLine("[Finished]");
Console.ReadKey();
}
private static void MyMethod()
{
RecurringJob.AddOrUpdate(() => Console.Write("Easy!"), Cron.Minutely);
}
}
}
ただし、実行時に例外がスローされます。
追加情報:JobStorage.Currentプロパティ値は初期化されていません。 Hangfire ClientまたはServer APIを使用する前に設定する必要があります。
そのため、これを実行するにはジョブストレージが必要です。しかし、SQLストレージなどのすべての例。ある種のメモリストレージでこの例を実行する方法はありますか?
JobStorage.Current = new SqlServerStorage("ConnectionStringName", options);
// to
JobStorage.Current = new MemoryDbStorage(string.Empty, options);
これには Hangfire.MemoryStorage を使用できます。
このnugetパッケージ を追加するだけです。
そして、あなたはそれを次のように使用することができます-
GlobalConfiguration.Configuration.UseMemoryStorage();
NET Core(Webアプリケーション)の場合:
それは私には明らかではなかったので、それを非常に明白にするためです。
次のnugetパッケージをインストールします。
Startup.csで:
public void ConfigureServices(IServiceCollection services)
{
// other registered services
...
services.AddHangfire(c => c.UseMemoryStorage());
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// other pipeline configuration
...
app.UseHangfireServer();
app.UseMvc();
}
上記よりも小さく、キューに登録されたメソッドは起動しませんでした。
Yogiが言ったように、Hangfire.MemoryStorageまたはHangfire.MemoryStorage.Core(.Net Core用)を使用できます。
その答えに欠けているのは、ConfigureServices(..)内に配置する必要がある完全なコード(.Net Core用)です。
var inMemory = GlobalConfiguration.Configuration.UseMemoryStorage();
services.AddHangfire(x => x.UseStorage(inMemory));