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
Antwort
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;
}
Ich aktualisierte FunqJobActivator zur Unterstützung von RegisterAutoWiredAs
Sie können weitere Hilfe auch in den [Hangfire Support Foren] (htt ps: //discuss.hangfire.io/). – mythz