J'ai une application console pour tester HangFire. Voici le code:
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);
}
}
}
Mais il lève une exception lors de l'exécution:
Informations supplémentaires: la valeur de la propriété JobStorage.Current n'a pas été initialisée. Vous devez le définir avant d'utiliser l'API Hangfire Client ou Server.
J'ai donc besoin d'un stockage de travail pour exécuter cela. Mais tous les exemples dans le stockage SQL, etc. Existe-t-il un moyen d'exécuter cet exemple avec une sorte de stockage en mémoire?
JobStorage.Current = new SqlServerStorage("ConnectionStringName", options);
// to
JobStorage.Current = new MemoryDbStorage(string.Empty, options);
Vous pouvez utiliser Hangfire.MemoryStorage pour cela.
Ajoutez simplement ce paquet de pépites .
Et puis vous pouvez l'utiliser comme -
GlobalConfiguration.Configuration.UseMemoryStorage();
Pour NET Core (application Web):
Juste pour le rendre très évident parce que ce n'était pas évident pour moi.
Installez les packages de pépites suivants:
Dans 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();
}
Rien de moins que ci-dessus et ma méthode en file d'attente n'a pas fonctionné.
Comme l'a dit Yogi, vous pouvez utiliser Hangfire.MemoryStorage ou Hangfire.MemoryStorage.Core (pour .Net Core).
Ce qui manque dans cette réponse, c'est le code complet (pour .Net Core) qui doit être placé dans ConfigureServices (..):
var inMemory = GlobalConfiguration.Configuration.UseMemoryStorage();
services.AddHangfire(x => x.UseStorage(inMemory));