0

我需要一些关于如何使用 azure webjobs 来满足这个要求的反馈。

我有一个要求,我们需要在预定时间发送通知电子邮件。通知的频率存储在数据库表中。表条目示例: 在此处输入图像描述

webjob 应该从 DB 表中读取配置并在配置的时间发送通知电子邮件(配置的时间是 DB 条目中提到的时间)。DB 表中将有多个条目,并且可以添加或修改新条目。上面的示例只有 2 个条目,可以有更多。

问题:

  1. 从数据库读取配置后,如何在一天中的特定时间让 webjob 触发电子邮件?
  2. 有没有更好的方法来使用任何其他天蓝色资源来实现此通知调度?
  3. 如何确保 webjob 成功发送电子邮件?
  4. 如果 webjob 发送电子邮件失败,是否有重试机制?

任何帮助,将不胜感激。

提前致谢。

4

1 回答 1

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!");
}
}

您可以选择将值设置到配置文件中,然后从中读取。关于如何阅读它,您可以查看此文档

关于使用表格数据创建 webjob 的详细示例代码,抱歉我没有,希望这些代码可以帮助你。如果您还有其他问题,请告诉我。

于 2019-01-10T05:58:46.133 回答