Можно ли повторить задание, пока условие не будет выполнено?например,
internal class Program
{
private static void Main(string[] args)
{
var user = new User();
var jobs = new Jobs();
Hangfire.BackgroundJob.Enqueue(() => jobs.SendNotification(user));
}
}
public class Jobs
{
Rules rules = new Rules();
public void SendNotification(User user)
{
if (rules.Rule1() && rules.Rule2())
{
// send notification
return;
}
// somehow retry the execution of this method (throw exception does not seem right)
}
}
public class Rules
{
public bool Rule1() { return true; }
public bool Rule2() { return true; }
}
public class User { }
Я знаю, что можно повторить выполнение метода, выдав исключение, но это не кажется правильным, поскольку я знаю, что восстановление из исключения довольно дорого, и оно пометит задание как невыполненное вИнтерфейс администратора Hangfire, который не соответствует действительности.
Я мог бы написать шаблон повторов сам, но мне нравится, как Hangfire сохраняет всю информацию, связанную с обработкой фоновых заданий, в постоянное хранилище (в моем случае SQL), данные не сохраняются в памяти процесса.Поэтому я предполагаю, что он может восстановить очередь из хранилища даже после выключения сервера и продолжить обработку.
Примечание: я хотел бы использовать Hangfire, потому что мы уже используем его для рабочих мест, но если он не подходит, у меня естьсвободная рукаНе могли бы вы порекомендовать какую-нибудь библиотеку, которая может делать то, что я хочу, и у вас есть хороший опыт работы с ней?