Ich habe einen Hangfire Server mit ~ 50 wiederkehrenden Jobs. Hangfire Einstellung auf IIS wie in this example. Recurring Jobs hinzugefügt in startup.cs wie diese hangfire:Wie wird nur ein Job gleichzeitig ausgeführt?
RecurringJob.AddOrUpdate(job.desctiprion,
() => job.startJob(),
job.cron,
TimeZoneInfo.Local);
Ich brauche neue wiederkehrende Aufgabe hinzuzufügen, die jede Minute läuft. Aber es gibt kaum eine Chance, dass dieser Job länger läuft. Mein Ziel ist es, gleichzeitig nur ein Exemplar dieses Jobs zu bearbeiten.
Welche Lösungen gibt es? So wie ich es verstehe, brauche ich etwas wie Warteschlange mit einem Thread, aber Warteschlangen unterstützen keine Thread-Einstellungen.
Es ist nicht klar, was Sie versuchen zu tun, ‚nur ein‘ und ‚gleichzeitig‘ scheinen nicht wirklich zusammen zu gehen. Dies: * um gleichzeitig nur ein Exemplar dieses Jobs zu bearbeiten * macht keinen Sinn. Könntest Du das erläutern? –
Sie wollen also nur sicherstellen, dass dieser Job sich nicht mit sich selbst überschneidet? – DavidG
Ich muss Situation vermeiden, wenn in einem Moment mehr als eine Instanz dieses wiederkehrenden Jobs in Bearbeitung ist. Ja, ich möchte nur sicherstellen, dass dieser Job sich nicht mit sich selbst überschneidet. Zum Beispiel: erster Job läuft um 17:00 und dieser Lauf dauert 2 Minuten 30 Sekunden. Ich muss Job in 17:01 und 17:02 vermeiden, aber Job in 17:03 laufen lassen. Ich verstehe, dass ich jedes Flag in der Datenbank für die Überprüfung verwenden kann, ob der Job jetzt ausgeführt wird. Aber vielleicht hat Hangfire eine einfache und korrekte Lösung für diesen Fall. – sintasy