Веб-задания Azure: отправлять уведомления по электронной почте в назначенное время? - PullRequest
0 голосов
/ 08 января 2019

Мне нужны были отзывы о том, как использовать веб-задания Azure для этого требования.

У меня есть требование, когда нам нужно отправлять уведомления по электронной почте в назначенное время. Частота уведомлений хранится в таблицах базы данных. пример записей таблицы: enter image description here

Webjob должен читать конфигурацию из таблицы БД и отправлять уведомления по электронной почте в установленное время (настроенное время - это время, указанное в записях БД). В таблице БД будет несколько записей, и могут быть добавлены или изменены новые записи. В приведенном выше примере всего 2 записи, может быть больше.

Вопросы:

  1. Как я могу заставить веб-джоб вызывать электронные письма в это конкретное время дня после чтения конфигурации из БД?
  2. Есть ли лучший способ реализовать это планирование уведомлений, используя любые другие ресурсы Azure?
  3. Как убедиться, что веб-работа успешно отправила электронное письмо?
  4. Существует ли механизм повторных попыток, если веб-заданию не удается отправить электронное письмо?

Любая помощь будет принята с благодарностью.

Заранее спасибо.

1 Ответ

0 голосов
/ 10 января 2019

Если вы хотите выбрать данные «cron» из таблицы, а затем создать триггерный таймер, вы можете использовать привязку выражений. Из официального doc мы могли знать, что можем получить привязку в настройках приложения, вы можете сделать это или обратиться к приведенному ниже коду.

 public class Program
{
  public static void Main()
   {
    JobHostConfiguration config = new JobHostConfiguration();
    config.NameResolver = new TimeResolver();
    config.UseTimers();
    JobHost host = new JobHost(config);
    host.RunAndBlock();
}

private class TimeResolver : INameResolver
{
    public string Resolve(string name)
    {
        string value = string.Empty;
        switch (name)
        {
            case "TimerJob":
                Console.WriteLine("Name Is TimerJob : " + name);
                value = "00:00:10";
                break;
            case "TimerJobAlter":
                Console.WriteLine("Name Is TimerJobAlter : " + name);
                value = "00:00:20";
                break;
        }
        return value;
    }
}


//Runs once every 30 seconds
public static void TimerJob([TimerTrigger("%TimerJob%")] TimerInfo timer)
{
    Console.WriteLine("Timer1 job fired!");
}

// Runs once every 60 seconds
public static void TimerJobAlter([TimerTrigger("%TimerJobAlter%")] TimerInfo timer)
{
    Console.WriteLine("Timer2 job fired!");
}
}

И вы можете установить значение в файл конфигурации, а затем прочитать его. О том, как это читать, вы можете посмотреть на этот документ .

Подробный пример кода для создания веб-задания с табличными данными, извините, у меня нет, надеюсь, этот код может вам помочь. Если у вас остались другие вопросы, пожалуйста, дайте мне знать.

...