2016-07-27 6 views
2

Gibt es eine Möglichkeit, Hangfire-Hintergrundjobs von ServiceStack-Diensten zu starten? Ich konnte bereits Aufträge innerhalb von MVC starten, wo ich ServiceStack-Dienste auflösen kann, aber ich wollte dies in ServiceStack tun können.Verwenden von Hangfire mit ServiceStack

+0

Sie können weitere Hilfe auch in den [Hangfire Support Foren] (htt ps: //discuss.hangfire.io/). – mythz

Antwort

3

Nach einigen weiteren Untersuchungen stieß ich auf diesen Beitrag setup example without owin?.

Eine Lösung wäre, das gesamte Hangfire-Paket nicht zu installieren, sondern nur Hangfire.Core und Hangfire.SqlServer (oder die entsprechende Speicheroption), die nur die Referenz des Owin-Pakets benötigt. Der einzige Nachteil ist, dass Sie Hangfire Dashboard nicht verwenden können.

Dann Hangfire beginnen und jeden Job durch den folgenden Code:

JobStorage.Current = new SqlServerStorage("connection string"); 
    var server = new BackgroundJobServer(); 
    server.Start(); 

    RecurringJob.AddOrUpdate(() => System.Diagnostics.Debug.WriteLine("No OWIN"), Cron.Minutely); 

Zusätzlich Sie die ServiceStack Funq für die HangFire JobActivator verwenden:

JobActivator.Current = new FunqJobActivator(container); 

nach dem Erstellen FunqJobActivator wie folgt:

public override object ActivateJob(Type jobType) 
    { 
     var resolved = _container.TryResolve(jobType); 

     if (resolved == null) 
     { 
      foreach (Type it in jobType.GetInterfaces()) 
      { 
       resolved = _container.TryResolve(it); 
       if(resolved != null)break; 
      } 
     } 

     return resolved; 
    } 
+0

Ich aktualisierte FunqJobActivator zur Unterstützung von RegisterAutoWiredAs Registrierung. – gjspaho