Можно ли отложить выполнение фоновых заданий в методе execute? - PullRequest
0 голосов
/ 15 февраля 2020

Если мы создадим BackgroundJob, у нас будут проблемы с выполнением этого BackgroundJob по любой причине. Наконец, по какой-то причине, например, из-за неподходящего времени, мы хотим отложить выполнение при последней попытке. Можно ли отложить выполнение в методе execute? пожалуйста, имейте в виду, что мой проект запуска aspnetboilerplate

один из подходов подобен этому

 public class SendSMSJob : BackgroundJob<SendSMSJobArgs>, ITransientDependency
{
    private readonly IMessageSettingRepository _messageSettingRepo;
    private readonly IBackgroundJobManager _backgroundJobManager;
    private readonly IRepository<SMSStatus> _smsRepo;

    public SendSMSJob(IRepository<SMSStatus> smsRepo,
        IBackgroundJobManager backgroundJobManager,
        IMessageSettingRepository messageSettingRepo)
    {
        backgroundJobManager = backgroundJobManager;
        _messageSettingRepo = messageSettingRepo;
        _smsRepo = smsRepo;
    }

    [UnitOfWork]
    public override void Execute(SendSMSJobArgs args)
    {
        if (Clock.Now.Hour >= 23 && Clock.Now.Hour <= 8)
        {
            Abp.Threading.AsyncHelper.RunSync(() => _backgroundJobManager.EnqueueAsync<SendSMSJob, SendSMSJobArgs>(args));
            return;
        }
        else
        {
            //do job
        }
    }
}
...