Веб-задания Azure: отправлять уведомления по электронной почте в назначенное время?
Мне нужно было узнать о том, как использовать лазурные веб-задания для этого требования.
У меня есть требование, когда мы должны отправлять уведомления по электронной почте в назначенное время. Частота уведомлений хранится в таблицах базы данных. пример записей таблицы:
Веб-работа должна прочитать конфигурацию из таблицы БД и отправить электронные письма с уведомлением в установленное время (настроенное время - это время, указанное в записях БД). В таблице БД будет несколько записей, и могут быть добавлены или изменены новые записи. В приведенном выше примере всего 2 записи, может быть и больше.
Вопросы:
- Как сделать так, чтобы веб-работа вызывала электронные письма в определенное время суток после чтения конфигурации из БД?
- Есть ли лучший способ реализовать это планирование уведомлений, используя любые другие ресурсы Azure?
- Как убедиться, что веб-работа успешно отправила электронное письмо?
- Существует ли механизм повторных попыток, если веб-заданию не удается отправить электронное письмо?
Любая помощь будет оценена.
Заранее спасибо.
1 ответ
Если вы хотите выбрать данные "cron" из таблицы, а затем создать триггер таймера, вы можете использовать привязку выражений. Из официального документа мы могли знать, что мы можем получить привязку в настройках приложения, вы можете сделать это или обратиться к приведенному ниже коду.
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!");
}
}
И вы можете установить значение в конфигурационный файл, а затем прочитать его. О том, как это читать, вы можете посмотреть в этом документе.
О подробном примере кода для создания веб-задания с табличными данными, извините, у меня нет, надеюсь, этот код может вам помочь. Если у вас остались другие вопросы, пожалуйста, дайте мне знать.