0

ユーザーが Web サイトにサインアップするたびに電子メールを送信する ASP.NET アプリがあります。メールを送信するためにジョブと郵便を管理するためにハングファイアを使用しています。

それはすべてうまく機能しますが、ここに問題があります:

ジョブを削除する前に、APP が電子メールを送信できる回数をスーパーユーザーに変更してもらいたいです。

これが私のコードです

    public static void WelcomeUser(DBContexts.Notifications not)
    {
        try{
            var viewsPath = Path.GetFullPath(HostingEnvironment.MapPath(@"~/Views/Emails"));
            var engines = new ViewEngineCollection();
            engines.Add(new FileSystemRazorViewEngine(viewsPath));

            Postal.EmailService service = new Postal.EmailService(engines);

            WelcomeUserMail welcomeUserMail = new WelcomeUserMail();
            welcomeUserMail.To = not.ReceiverEmail;
            welcomeUserMail.UserEmail = not.ReceiverEmail;
            welcomeUserMail.From = BaseNotification.GetEmailFrom();

            service.Send(welcomeUserMail);
        }
        catch(Exception e)
        {
            DBContexts.DBModel dbModel = new DBModel();
            DBContexts.Notifications notificacionBD =  dbModel.Notifications.Find(not.NotificationID);

            notificacionBD.Status = false;
            notificacionBD.Timestamp = DateTime.Now;
            notificacionBD.Error = e.Message;

            int numberOfRetriesAllowed = ParameterHelper.getNumberOfRetriesAllowed();

            if (notificacionBD.Retries > numberOfRetriesAllowed)
            {
                //In this case Hangfire won't put this job in the failed section but rather in the processed section.
                dbModel.SaveChanges();
            }
            else
            {
                notificacionBD.Retries++;
                dbModel.SaveChanges();

                throw new Exception(e.Message);
            }
        }
    }
4

1 に答える 1

0

属性を追加して自動的に処理しないのはなぜですか?

[AutomaticRetry(Attempts = 10, LogEvents = true, OnAttemptsExceeded = AttemptsExceededAction.Delete)]
public void MyTask(){
    //doing stuff
}

または、AutommaticRetryAttribute クラスを模倣する独自の属性を作成することもできますが、それをどのように処理しますか?

https://github.com/HangfireIO/Hangfire/blob/a5761072f18ff4caa80910cda4652970cf52e693/src/Hangfire.Core/AutomaticRetryAttribute.cs

于 2016-04-14T13:04:04.993 に答える