Ich habe eine Anwendung, die Hangfire verwendet, um langwierige Jobs für mich zu tun (ich weiß, die Zeit, die der Job dauert und es ist immer ungefähr das gleiche), und in meiner UI möchte ich geben Sie eine Schätzung ab, wann eine bestimmte Arbeit erledigt wird. Dazu muss ich Hangfire nach der Position des Jobs in der Warteschlange und der Anzahl der darauf arbeitenden Server abfragen.Wie ungefähr Job-Abschlusszeiten in Hangfire
Ich weiß, dass ich die Anzahl anstehender Aufträge erhalten können (in der "STANDARD" queue) von
public long JobsInQueue() {
var monitor = JobStorage.Current.GetMonitoringApi();
return monitor.EnqueuedCount("DEFAULT");
}
und die Anzahl der Server, die von
public int HealthyServers() {
var monitor = JobStorage.Current.GetMonitoringApi();
return monitor.Servers().Count(n => (n.Heartbeat != null) && (DateTime.Now - n.Heartbeat.Value).TotalMinutes < 5);
}
(BTW: Ich schließe ältere Herzschläge , denn wenn ich Server ausschalte, verweilen sie manchmal in der Hangfire-Datenbank. Gibt es einen besseren Weg?), aber um eine korrekte Schätzung zu geben, muss ich die Position des Jobs in der Warteschlange kennen. Wie bekomme ich das?
Auch trifft es mir, dass Sie Ihre Frage umformulieren sollten auf " Wie man Jobbeendigungszeiten in Hangfire annähert " –
@ TomRedfern: Danke, gute Idee. Erledigt. – EluciusFTW